第1个回答 2012-03-13
仅供参考,1000以内的:
//一个数如果恰好等于它的因子之和,这个数就称为“完数”。
//例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”,
//编程找出1000以内的所有完数:
#include <stdio.h>
void main()
{
int x, i, sum;
x = 1;
while(x <= 1000) { //x要从1到1000循环。
sum = 0; //每算一个新的x时,sum要清0
for(i = 1; i < x; i++) if(x % i == 0) sum += i; //如果i是x的因子,sum加上i
if(x == sum) printf("%d\n", x); //如果因子和等于本身
x++;
}
}
程序运行结果:
6
28
496本回答被网友采纳
第2个回答 推荐于2018-05-10
#include <stdio.h>
void main()
{
int i,j,x,y;
for(i=2;i<=2000;i++)
{
x=i;
y=0;//将y的数值清零
for(j=1;j<i;j++)
{
if(x%j == 0)
{
y=y+j;
}
if(x==y)
{
if(j==(x-1))//确保除到x的上一位,避免出现还没有除到x的上一位就出现x==y的情况,如24数值。
printf("%d\n",x);
}
}
}
}本回答被网友采纳
第3个回答 2012-03-12
#include<stdio.h>
int iswanshu(int);
int main(void){
int i;
for(i = 2; i<=100;i++){
if(iswanshu(i)){
printf("%d\n",i);
}
}
}
int iswanshu(int n){
int sum = 0;
int i;
for(i = 1;i<n;i++){
if(n % i == 0){
sum = sum +i;
}
}
if(sum == n){
return 1;
}
else
return 0;
}