永发信息网

vf代码找出1000以内的10个最大的完数

答案:2  悬赏:0  手机版
解决时间 2021-03-30 12:58
  • 提问者网友:愿为果
  • 2021-03-30 02:01
vf代码找出1000以内的10个最大的完数
最佳答案
  • 五星知识达人网友:鸠书
  • 2021-03-30 03:29
完数,即完美数,一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。
1000以内所有完数
C语言代码:
#include

#define N 1000 //完数求解范围
main()
{
int i,j,sum; //sum用来存放因子之和

for(i=1;i{
sum=0; //给sum赋值,同时也是对上一次的值清空
for(j=1;j<=i/2;j++) //查找因子
{
if(i%j==0) // 如果是因子
{
sum+=j; //把当前的因子累加到sum中
}
}
if(sum==i) //判断是不是完数,即因子之和等于自身
{
printf("%-5d its factors are: ",i); //是完数,输出
for(j=1;j<=i/2;j++) //再次找出这个完数的因子
{
if(i%j==0) //输出各个因子
printf("%d,",j);
}
printf("\n");
}
}
}
全部回答
  • 1楼网友:琴狂剑也妄
  • 2021-03-30 03:56
DIME A(1000)
FOR I = 1 TO 1000
M = I
S = 0
K = 1
J = 1
DO WHILE JIF M % J = 0
S = S + J
A(K) = J
K = K + 1
ENDIF
J = J + 1
ENDDO
IF S != 0 AND S = M
J = 1
? '因子是:’
DO WHILE J < K
?? A( J ) , ' '
J = J + 1
ENDDO
? '完数是' , I
?
ENDIF
ENDFOR
在代码段从上向下看,则A是数组(数据集合),i是循环变量,m是从循环变量中依次取数用于和 j 做比较——m相当于以步长为1从1到1000、j相当于自我按照步长1来累计相加在1到1000之间(在第一个DO循环段里),s是把能够被M整除的 j 累加起来、然后如果s累加值等于m则s或m都是完数,k用于为把完数中的因子提取出来提供条件,j是因子数组的下标,当i=s=m时、i也是完数。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯