早教吧作业答案频道 -->其他-->
编程一个数论的题..已知n(1≤n≤2000000000),f(n)=lcm(1,n)+lcm(2,n)+…+lcm(n,n),容易证明f(n)能被n整除,输出f(n)/n的值.lcm(a,b)表示a与b的最小公倍数例如:f(1)=1f(2)=2f(3)=4...这本是个编程题但数据规模太
题目详情
编程 一个数论的题 ..
已知n(1≤n≤2000000000),f(n)=lcm(1,n)+ lcm(2,n)+…+ lcm(n,n),容易证明f(n)能被n整除,输出f(n)/n的值.
lcm(a,b)表示a与b的最小公倍数
例如:
f(1)=1
f(2)=2
f(3)=4
...
这本是个编程题
但数据规模太大了
应该有数学上的一些优化方法
说下思路就行了
已知n(1≤n≤2000000000),f(n)=lcm(1,n)+ lcm(2,n)+…+ lcm(n,n),容易证明f(n)能被n整除,输出f(n)/n的值.
lcm(a,b)表示a与b的最小公倍数
例如:
f(1)=1
f(2)=2
f(3)=4
...
这本是个编程题
但数据规模太大了
应该有数学上的一些优化方法
说下思路就行了
▼优质解答
答案和解析
显然,lcm(i,n) (i=1,2,...,n,下面省略)肯定是能被n整除的,所以f(n)能被n整除,因此只要求出lcm(i,n)/n的值就可以了.我是这样分析lcm(i,n)的:它可以由i*n再约去两者的共同因子得到.因此,只要把i中两者的共同因子约去,再把结果相加起来便得到了lcm(i,n)/n.可以首先对n分解质因数,然后用i除以n的各质因数,如果能整除,则在i中约去该因子(因为该因子为两者的共同因子).对每一个i执行以上步骤后,再把结果加起来就行了.
下面是C语言的完整代码:
#include
void main()
{
long n, i, j;
printf("请输入数n (1
下面是C语言的完整代码:
#include
void main()
{
long n, i, j;
printf("请输入数n (1
看了编程一个数论的题..已知n(1...的网友还看了以下:
在转让长期股权投资时,原由于投资产生的"资本公积"也应一并结转,由"其他资本公积"明细 2020-05-17 …
公司的资本公积金用于弥补公司的亏损、扩大公司生产经营或者转为增加公司资本。() 2020-05-27 …
18.甲公司现有注册资本l000万元,乙公司想投资入股,计划投入400万元,拥有20%股份,则接受 2020-06-03 …
某企业年初所有者权益总额160万,当年以其中的资本公积转增资本50万.当年实现净利润300万,提取 2020-06-30 …
近年来,各地政府按照公益性、基本性、均等性、便利性的要求,加强文化基础设施建设,完善公共文化服务网 2020-07-28 …
我国人均耕地面积从20世纪50年代初的0.2公顷降至目前的0.09公顷,耕地总面积已经逼近国家规定的 2020-11-04 …
中文翻译英文因关联交易导致的子公司的资本公积增加数在将母公司对子公司股权投资报告价值与子公司股东权益 2020-11-06 …
(2014•邵阳)我国人均耕地面积从20世纪50年代初的0.2公顷降至目前的0.09公顷,耕地总面积 2020-11-27 …
2017年3月,国务院印发的《“十三五”推进基本公共服务均等化规划》指出,基本公共服务均等是指全体公 2020-12-01 …
根据圆的基本公式AX^2+BX+CY^2+DY+E=0怎么求半径不要配平方慢我要公式那个会学数学的你 2020-12-03 …