求教:1000以内的完数!
如果一个数恰好等于它各个因子之和,那么这个数就是“完数”。
我写了个程序求1000以内的完数,可惜没能实现功能。
程序简单,但我是Beginner,到底错在哪里,请高手赐教
public class wanshu {
public static void main (String args[]) {
int sum,n,i;
for (n=2;n<=1000;n++)
{
sum=0;
for(i=2;i<n;i++)
if (n%i==0) sum+=i;
if (sum==n)
System.out.println (n+",");
}
}
}
问题点数:0、回复次数:6Top
1 楼hact(this.u)回复于 2003-11-01 23:20:47 得分 0
哈哈!我刚给我女朋友做了这个,不过是用c语言写的
等等啊
我改成java的 不过上面i<n/2就好了Top
2 楼hact(this.u)回复于 2003-11-01 23:27:55 得分 0
错了,是 i<=n/2
//WanShu.java
public class WanShu {
public static void main (String args[]) {
int sum,n,i;
for (n=2;n<=1000;n++)
{
sum=0;
for(i=1;i<=n/2;i++)
if (n%i==0) sum+=i;
if (sum==n)
System.out.println (n+",");
}
}
}
结果是
6,
28,
496,Top
3 楼hact(this.u)回复于 2003-11-01 23:30:22 得分 0
1算不算啊?
算的话for(n=1;n<=1000;n++)Top
4 楼tyxsoft(bfmtyx)回复于 2003-11-02 11:40:31 得分 0
原来1要算~ 怪不得我一个都求不出,谢谢Top
5 楼avi11lang(萧十一郎)回复于 2003-12-09 01:30:41 得分 0
一当然不能算 根本不是啊Top
6 楼avi11lang(萧十一郎)回复于 2003-12-09 01:41:16 得分 0
class Result{
public static void main(String args[]){
int M=1000;
int i,j,r,n;
for(i=2;i<M;i++){
n=0;
r=i;
for(j=1;j<i;j++){
if(i%j==0){
n++;
r-=j;
}
}
if (r==0){
System.out.println(i);
}
}
}
}Top




