永发信息网

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

答案:2  悬赏:30  手机版
解决时间 2021-06-01 12:18
  • 提问者网友:献世佛
  • 2021-06-01 05:00
如果一个整数(》1)的各因子(包括1,但不包括整数本身)之和等于该整数,称这样的整数为完全数。例如6=1+2+3,所以6是完全数。编写一个已知整数判断其是否是完全数的函数。并用该函数输出1000以内的所有完全数
最佳答案
  • 五星知识达人网友:渡鹤影
  • 2021-06-01 05:54

#include <stdio.h>


int fun(int n)
{
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" );



for(i = 1; i <= 1000; i++)
{
if( fun( i ) )
printf("%d\t",i);
}
printf("\n");
return 0;
}

全部回答
  • 1楼网友:大漠
  • 2021-06-01 06:32

我用vbscript编一个吧!

dim sum=0

for n=2 to 1000

for i=1 to n-1

if n mod i=0 then

sum=sum+i

end if

next

if n=sum then

str=str&" "&n

end if

next

msgbox 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 If

End Function

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯