1
0
已采纳
宫西诚
修练者
修练者
你好,张舒斌,郑怡翔,
这题不能直接暴力枚举,循环条件为1到n的开平方,
因为一个数例如16,的因数有,1*16,2*8,4*4;
分别为1,2,4,8,16
也就是说,当n模i为零,输出这个数和n除以这个数
上代码
long long ans=0; for(int i=1;i<=sqrt(n);i++) { if(n%i==0) { ans+=i;//先加上此数 } if(n/i!=i) ans+=n/i;//如果不是他的平方数,加它的因数,为了防止平方数累计相加,如16,运行到4时,只加一个4 } cout<<ans; }
有什么不会的接着问我
0
0