c语言编程,输入1000以内的完全数
发布网友
发布时间:2022-05-11 13:42
我来回答
共3个回答
热心网友
时间:2023-10-13 11:56
#include <stdio.h>
int main() {
int n,i,sum;
for(n = 2; n <= 1000;n++) {
sum = 0;
for(i = 1; i < n;i++)
if(n % i == 0) sum = sum + i;
if(sum == n) {
printf( "%d its factors are:\n",n);
for(i = 1; i < n; i++)
if(n%i == 0) printf("%d ",i);
printf("\n");
}
}
return 0;
}
热心网友
时间:2023-10-13 11:56
#include <stdio.h>
int main()
{
int n,i,sum;
for(n=2;n<=1000;n++)
{
sum=0;
for(i=1;i<n;i++)
{
if(n%i==0)
sum=sum+i;
}
if(sum==n)
{
printf( "%d its factors are",n);
for(i=1;i<n;i++)
{
if(n%i==0)
printf("%5d",i);
}
printf("\n");
}
}
return 0;
}
这样就可以了
之前在没有累加完所有因数的时候 就进行了判断
这样就导致部分因数累加等于原值时同样会打印
比如 24 1 2 3 4 6 8 12
其中 24 = 1 + 2 + 3 + 4 + 6 + 8
热心网友
时间:2023-10-13 11:57
我可以告诉你我的思路,因为我是pascal的,不是C的,判断完全数可以直接把i从1~n div 2去枚举,假如i是n的倍数就用s储存起来{这里应该你也会吧。},但是注意时N div 2,因为这是完全数的规定。然后再判断s是否等于n就可以了,
当然s一定一定要记住变为0!