编写一个已知整数判断其是否是完全数的函数。并用该函数输出1000以内的所有完全数

如果一个整数(》1)的各因子(包括1,但不包括整数本身)之和等于该整数,称这样的整数为完全数。例如6=1+2+3,所以6是完全数。编写一个已知整数判断其是否是完全数的函数。并用该函数输出1000以内的所有完全数

#include <stdio.h>int fun(int n) /*函数用来判断一个数是否是完全数.是就返回1. 不是返回0*/
{
int i,sum = 0;
for(i=1;i<n;i++)
{
if(n % i == 0) //如果i是n的因子. 就将i累加到sum中.
sum = sum + i;
}
if(sum == n) //判断n和sum是否相等.如果相等就说明这个数是完全数.返回1.
return 1;
return 0; //否则返回0;
}int main()
{
int i,t;
/*输入一个整数,判断这个数是否是完全数*/
scanf("%d", &t);
if( fun( t ) )
printf( "Yes\n" );
else
printf( "No\n" );/*输出1000以内所有完全数*/
for(i = 1; i <= 1000; i++)
{
if( fun( i ) )
printf("%d\t",i);
}
printf("\n");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-21
我用vbscript编一个吧!dim sum=0for n=2 to 1000for i=1 to n-1if n mod i=0 thensum=sum+iend ifnextif n=sum thenstr=str&" "&nend ifnextmsgbox str 俺用VB实现的,呵呵Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 1000
If wanquanshu(i) <> -1 Then
Print wanquanshu(i)
End If
Next i
End Sub
Public Function wanquanshu(j As Integer) As Integer
Dim i, sum As Integer
For i = 1 To j - 1
If j Mod i = 0 Then
sum = sum + i
End If
Next i
If sum = j Then
wanquanshu = sum
Else
wanquanshu = -1
End IfEnd Function
相似回答