简单的题 一个数如果恰好等于它的因子之和,这个数就称为"完全数"。例如6=1+2+3.编程 找出1000以内的所有完全数。

qq_26386215 2016-06-11 10:46:07
import java.util.ArrayList;
public class CS9 {
public static void main(String[] args) {

for(int n=1;n<1001;n++) {

ArrayList<Integer> list = new ArrayList<Integer>();

for(int i=1;i<500;i++) {
if(n%i==0) {
list.add(i);
}
}

int k =0;

for(int j=0;j<list.size();j++) {
k+=list.get(j);

if(n==k) {
System.out.println(n);
}

else list.clear();
}

}
}
}

输出只有1
...全文
628 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
爬不快的蜗牛 2016-06-11
  • 打赏
  • 举报
回复
兄弟,你的第一个分解因数写错了 你看: for(int i=1;i<500;i++) { if(n%i==0) { list.add(i); } } n=4,你添加了1,2,4,4本身不算,错在i<500 然后 第二个for循环也错了, for(int j=0;j<list.size();j++) { k+=list.get(j); if(n==k) { System.out.println(n); } else list.clear(); 你是想现把list里的因数相加在于n比较,但是你的循环主体写错了,大括号{}包多了 给你个修复的 import java.util.ArrayList; public class CS9 { public static void main(String[] args) { for(int n=1;n<1001;n++) { ArrayList<Integer> list = new ArrayList<Integer>(); for(int i=1;i<=n/2||i==1;i++) { if(n%i==0) { list.add(i); } } int k =0; for(int j=0;j<list.size();j++) k+=list.get(j); if(n==k) { System.out.println(n); } } } }

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧