简单的题 一个数如果恰好等于它的因子之和,这个数就称为"完全数"。例如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
...全文
663 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); } } } }
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文研究了基于非支配排序的蜣螂优化算法(NSDBO)在微电网多目标优化调度中的应用,并提供了Matlab代码实现。该方法结合智能优化算法与电力系统调度需求,针对微电网运行中的多重目标(如经济性、环保性、稳定性等)进行协同优化,有效提升了调度方案的综合性能。文中详细阐述了NSDBO算法的设计原理、非支配排序机制及其在求解多目标问上的优势,并通过仿真实验验证了其相较于传统算法在收敛性和多样性方面的优越表现。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网优化、智能优化算法研究的相关工程技术人员。; 使用场景及目标:①用于解决微电网中多目标、多约束的优化调度问,如成本最小化与碳排放最低的平衡;②为智能优化算法在能源系统中的应用提供可复现的技术路径和代码参考,支持学术研究与实际项目开发; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序与蜣螂行为模拟的融合机制,同时可尝试将其迁移至其他多目标优化问中进行拓展研究。

62,629

社区成员

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

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