《1000以内的完数求解.docx》由会员分享,可在线阅读,更多相关《1000以内的完数求解.docx(4页珍藏版)》请在三一办公上搜索。
1、1000以内的完数求解一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程找出1000以内的所有完数,并按下面格式输出其因子:6 its factors are 1,2,3,分析:对于本题来说,只能要依次找出它的因子,就很容易做了,这里可以采用循环的方式,从1开始到n/2就可以了,C语言代码:#include <stdio.h>/*CopyRightfantasy0707*/#define N 1000 /完数求解范围mainint i,j,sum; /sum用来存放因子之和for(i=1;i<N;i+) /对1到
2、1000以内的数依次尝试 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);java 代码:public class Test /* by: fantasy0707*/publi
3、c static void main(String args) int i,j,sum; /sum用来存放因子之和 for(i=1;i<1000;i+) /对1到1000以内的数依次尝试sum = 0; /给sum赋值,同时也是对上一次的值清空for(j=1;j<=i/2;j+) /查找因子if(i%j=0) / 如果是因子sum+=j; /把当前的因子累加到sum中 if(sum=i) /判断是不是完数,即因子之和等于自身System.out.print(i+ its factors are: ); /是完数,输出for(j=1;j<=i/2;j+) /再次找出这个完数的因子if(i%j=0) /输出各个因子System.out.print(j+, );System.out.println;程序运行结果:6 its factors are: 1,2,3,28 its factors are: 1,2,4,7,14,496 its factors are: 1,2,4,8,16,31,62,124,248,