问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一个简单的Java编程题不知道为什么错了(求完全数)

发布网友 发布时间:2022-07-17 06:13

我来回答

2个回答

热心网友 时间:2024-12-15 00:51

要求是求完全数,首先完全数是各个小于它的约数(真约数)的和等于它本身的自然数,也就是说判断一个数i是不是完全数,是从1取到j(i-1),判断i%j == 0;像程序中写的那样,如是成立,则y+=j;否则,应该是j++,而不是判断i==y,因为此时i的约数还没有取尽。思路是对的,是内层循环嵌套错了。在编码时注意格式,会看的更加清晰(如下)。
public class PerfectNum{
public static void main(String [] args){
int count=1;
for(int i = 1;i < 10000;i++){
int y=0;
for(int j = 1;j < i;j++){ //去除这里的{}为正确的
if(i%j == 0){
y+=j;
}
if(i == y){
System.out.print(i+String.valueOf('\t'));
count++;
if(count%3 == 0){
System.out.println();
}
}
}
}
}
}

热心网友 时间:2024-12-15 00:51

 public static void main(String[] args) {
  int count = 1;
  for (int i = 1; i < 10000; i++) {
  int y = 0;
  for (int j = 1; j < i; j++) // 这里不加{}
  if (i % j == 0) { }
  
   if (i == y) { }
}
}

上面不加{}意思和下面加{}意思相同

 public static void main(String[] args) {
  int count = 1;
  for (int i = 1; i < 10000; i++) {
  int y = 0;
  for (int j = 1; j < i; j++){ // 这里加{}
  if (i % j == 0) { }
  }//这里加{}
   if (i == y) { }
}
}

//上面两个意思相同,与下面的意思不同 这个{ } 里有两个 if(){}
 public static void main(String[] args) {
  int count = 1;
  for (int i = 1; i < 10000; i++) {
  int y = 0;
  for (int j = 1; j < i; j++){ // 这里加{}
  if (i % j == 0) { }
  
   if (i == y) { }
}//这里加{}

}
}

于是 把你代码改一下就对了
public class PerfectNum{
public static void main(String [] args){
int count=1;
for(int i = 1;i < 10000;i++){
int y=0;
for(int j = 1;j < i;j++){ //去除这里的{}为正确的
if(i%j == 0){
y+=j;
}
}//下面的 花括号 放这里来
if(i == y){
System.out.print(i+String.valueOf('\t'));
count++;
if(count%3 == 0){
System.out.println();
}
}
}
}
}追问谢谢,你是对的,但是为什么把括号放在最后会是三行显示呢??而且哪两个数8190和8128是怎么来的??

追答=因为 count%3==0 count是3的倍数判断为真 即 换行
因为count是从1开始的 显示第一个数的时候count=2 所以第一行会显示2个数 从第二行开始显示3个
至于8190和8128 怎么来的,因为i=8128 i=8190的时候有很多个 j 满足两个if子句所有会打印很多遍 ,算出来不是很难 :一步一步逆推,
i=8190,i%j==0 j可能的值如下:1 2 3 5 6 7 9 10 13 14 15 18 21 26 30 35 39 42 45 63 65 70 78 90 91 105 117 126 130 182 195 210 234 273 315 390 455 546 585 630 819 910 1170 1365 1638 2730 4095 y是这些值的和 当 j=1170时 y=8190 很明显 这是会打印i即8190 当j=1171时 y=8190 打印i……一直到j=1365时 y=8190+1365 ,所以会有很多8190
如果程序正确就不会有这样的问题了 y最终的值一定大于8190
8128 j:1 3 7 15 31 63 127 254 508 1016 2032 4064 j=4064时(最后一个?数) y=8128
主要理解程序运行的过程就OK

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
轻度慢性萎缩性胃炎 活动期,伴轻度肠 化 胃角多发糜烂。医生说了我... 胃窦粘膜慢性轻度萎缩性炎伴轻度肠化胃窦粘膜慢性轻度萎缩性炎? 芬兰留学读研费用是多少 芬兰留学读研时间 去芬兰留学学费生活费一年要多少 芬兰留学读研费用是多少? 芬兰留学读研学费多少? 感冒好多天了,可不可以打蓝球或者其它运动出出汗啊? 感冒打喷嚏,鼻塞然后可以让自己多出出汗吗 宝宝感冒了能去游泳吗 用java,如何计算完全数? 皮鼓两面圆是几 皮鼓两面圆,甘蔗特别甜,酿造红高粱,兴高采烈前后跑 分析意思 猜数字 一架鼓,两个面。六鼓手,分开敲。(打三个数字),求解释 (皮鼓两面圆)(豪气冲云天)(修来二世缘)这三句话中暗藏着3个不同的... 鼓面蒙皮,猜三个数字 皮鼓两面鼓,江湖走一遭,三生有幸人,猜三位数字 皮鼓两面圆打一数字 皮鼓两面圆打个数字是几 皮鼓几个面 打一数字(0~9) 纸屑从天上飘下来这样造句对不对? 没有银行卡怎么红包 汽水炸弹能加糖吗? 提车三个月前排USB线接口出问题算保修吗 普锐特冶金技术为桂林平钢提供的量子电炉验收了吗? 请帮忙翻译以下,是外贸供货合同里面的一句,关于最终接收证书的描述 56300元等于多少万元? 外资企业可以注册国内海运公司吗? ...想问一下,如何在天津注册一个综合的航运公司,包括租船业务,货代业务... 会计信息与股价变动的联系 Java 求100以内的完全数 运算过程是怎样的 怎么得到6 ,28的 最近一尿完就感觉还有尿 怎么办? 小便完以后怎么老是感觉还有一点好像没尿完,而且还有点痛? 金柚的文化 电影《昆池岩》取景地是在哪里的 渐行渐远的人怎么可能像最初一样热衷? 人,渐行渐远。 心,矢志不渝是什么意思? 渐行渐远的人? 会和哪几个人的世界渐行渐远的人,是受的苦太多? 渐行渐远是形容一个人还是一段关系比较好? 渐行渐远的人没有结果什么意思? 统招专升本和本科毕业证一样吗统招专升本和本科毕业证一样不 孕妇梦见一大群孩子在欢声笑语中跑来跑去 自走棋信使 海盗船是怎么获得的 为什么图鉴里没有啊? 现在黄全多少钱I克 黄全多少钱一克 汨罗市,营田镇梦金园黄全多少钱一克 彩金和黄全有什么差别 如何分割男方婚前买房产权婚后才办离婚后房屋 婚前房产离婚后怎样分割