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
