编写java循环程序,找出1000以内的所有完数

 我来答
Monubia
推荐于2017-11-27 · TA获得超过8962个赞
知道大有可为答主
回答量:4373
采纳率:75%
帮助的人:1362万
展开全部
public class Test {

    public 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();
            }
        }
    }
}

 这些题百度里面都是找得到的

一杏鸟
2016-12-23 · TA获得超过316个赞
知道小有建树答主
回答量:198
采纳率:75%
帮助的人:65.5万
展开全部
public class PerfectNumberTest {
    public static void main(String[] args) {
        int count = 0;//定义一个计数器
        System.out.println("1~10000范围内的所有完数如下:");
        long start = System.currentTimeMillis();
        for (int num = 2; num <= 10000 ; num ++ ) {
            int sum = 0;//定义一个因子求和公式
            for (int divisor = 1 ; divisor <= num / divisor ; divisor ++) {
                if (num % divisor == 0 && divisor != num / divisor) {//若num开根号结果不是他的因子
                    sum = divisor + (num / divisor) + sum;//则num/divisor也一定是他的因子
                } else if (num % divisor == 0 && divisor == num / divisor) {//若num开根号的结果是他的因子
                    sum = divisor + sum;//则只把因子(num/divisor重复因子)赋值给sum
                }
            }
            if ((sum - num) == num) {//如果因子之和-该数等于该数,则这个数就是完数
                count ++;//计数器加一
                System.out.println("第 " + count +" 完数是: " + num);//输出完数
            }
        }
        long end = System.currentTimeMillis();
        System.out.println("遍历全部完数所使用的时间: " + (end - start) + " 毫秒");
    }
}

参考简书的一篇文章 http://www.jianshu.com/p/5a0d45da2b99


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_爱生活爱宝宝
2015-01-12 · TA获得超过159个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:165万
展开全部
首先,我不知道完数是什么 不过百度了下发现有一个人用c++编好了 省的我动脑筋了就,下面我把那朋友写的换成了java的运行了下发现还是可以的你直接用就好了:

int i,j,k,h,s,sum;
int[] a = new int[200];
s=0;
sum=0;

for(i=2;i<=1000;i++)
{
s=0;//此处s=0一定要加,因为前几次循环的时候s的值已经改变
k=0;
for(j=1;j<i;j++)
{
if((i%j)==0){a[k]=j;k++;}
}
for(h=0;h<k;h++)
{
s+=a[h];
}
if(i==s){System.out.println(i);sum++;}
}
System.out.println(sum);
结果就这样了,变量定义的有点乱,你看看就行了我也懒得改这个,输出的结果是完数以及完数的个数,放到main里直接运行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-01-12
展开全部
  public static void main(String[] args)
 {
     int s;
     for(int i=1;i<=1000;i++)
     {
        s=0;
        for(int j=1;j<i;j++)
            if(i % j==0)
               s=s+j;
           if(s==i)
              System.out.print(i+" ");
     }
     System.out.println();
 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哥斯拉
2019-12-23 · 专注教育行业健康发展!
哥斯拉
采纳数:28 获赞数:1155

向TA提问 私信TA
展开全部
package mytest;

public class Example {
public static void main(String[] args) {
System.out.println("1到1000的完数有:");
for (int i=1; i < 1000; i++){
int t = 0;
for (int j=1; j <= i/2; j++){
if(i % j == 0){
t = t + j;
}
}
if(t == i){
System.out.print(i+" ");
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式