求因数,不是能用这个数的平方根当范围嘛,这样写,不对呢?
#include <stdio.h>
#include <math.h>
int main (void)
{
int m,s,i;
for (m = 2; m < 1000; m++)
{
s = 0;
for (i = 1; i <= sqrt(m); i++)
if ((m % i) == 0) s = s + i;
if (s == m)
{
printf ("%d 是一个完数.它的因子是",m);
for (i = 1; i < m; i++)
if (m % i == 0) printf ("%d ",i);
printf ("\n");
}
}
return 0;
}
[解决办法]
- C/C++ code
int main (void) { int m,s,i,tmp; for (m = 2; m < 1000; m++) { s = 0; for (i = 1; i <= sqrt((double)m); i++) if ((m % i) == 0) { s = s + i; tmp = m/i; if(tmp>i && tmp<m) s+=tmp; } if (s == m) { printf ("%d 是一个完数.它的因子是",m); for (i = 1; i < m; i++) { if (m % i == 0) { printf ("%d ",i); } } printf ("\n"); } } return 0; }