java - 试图在java中的上限内找到一个完美数而不创建方法
问题描述
我只是想打印某个上限内的完美数字,但我得到了其他显示的数字,它们不是完美的数字。我不是在尝试使用一种方法,而不仅仅是主循环中的所有内容。我需要帮助。
public static void main(String arg[]) {
int upper;
int sum = 0;
int i;
System.out.println("Enter upper limit");
Scanner stnd = new Scanner(System.in);
upper = stnd.nextInt();
for(int n = 1; n < upper; n++) {
i = 1;
sum = 0;
while (i <= n/2) {
if (n%i == 0) {
sum = sum + i;
}
i++;
if(sum == n) {
System.out.println(n+" is a perfect number");
break;
} else {
}
}
}
}
解决方案
您while
的代码中有一个循环,可以将数字的因子相加。问题是当while
循环尚未完成时,您正在检查总和。在 24 的情况下,你加起来了
1 + 2 + 3 + 4 + 6 + 8
这是 24,但你的循环还没有到 12。
你需要搬家
if(sum == n) {
System.out.println(n+" is a perfect number");
}
在while
循环之后,而不是在循环内。
推荐阅读
- c# - 如何在 Cocoa App / c# 中从文件菜单模拟打印
- python - Python Django 忽略原子
- java - ViewPager2 位置改变时更新片段中的数据
- hive - 如何在镶木地板文件上创建外部表
- c# - Keycloak 通过 docker: InvalidOperationException: IDX20803
- python - 在 Pulp3 中创建 Python 存储库
- kibana - 无法使用域访问 kibana
- python - 根据“Base”-Dictionary 从多个数据帧乘以值创建多个数据帧
- oracle - 如何区分哪个客户端通过 proxy_user 连接到数据库?
- javascript - 如何为 react.js 中的功能组件留出余量?