求1000以内的完数。并输出。

问题描述

publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;for(i=1;i<=1000;i++){for(j=1,h=0;j<=i/2;j++){if(i%j==0)h=h+j;}if(h==i)System.out.print("1000以内的完数");System.out.println();System.out.print(i);}}}用java语言编的不知哪错了。运行结果是输出了1~1000.

解决方案

解决方案二:
publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;for(i=1;i<=1000;i++){for(j=1,h=0;j<=i/2;j++){if(i%j==0&&i!=j)h=h+j;}if(h==i){System.out.print("1000以内的完数");System.out.println(i);}//System.out.println();//System.out.print(i);}}}

解决方案三:
第二个循环中h的值设置有问题,改成下面的:publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;System.out.println("1000以内的完数:");for(i=1;i<=1000;i++){h=0;for(j=1;j<=i/2;j++){if(i%j==0)h=h+j;}if(h==i)System.out.println(i);}}}

解决方案四:
引用楼主u010278064的回复:

publicclassWanShu{publicstaticvoidmain(String[]args){inti,j,h=0;for(i=1;i<=1000;i++){for(j=1,h=0;j<=i/2;j++){if(i%j==0)h=h+j;}if(h==i)System.out.print("1000以内的完数");System.out.println();System.out.print(i);}}}用java语言编的不知哪错了。运行结果是输出了1~1000.

System.out.print(i);写在if范围之外了,所以不管if判断是否为TRUE每次for循环都会把i给输出了

时间: 2024-12-05 14:47:34

求1000以内的完数。并输出。的相关文章

如何判断完数然后输出6=1+2+3 28=1+2+4+7+14

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<math.h> int f(int num){ int index = 0; int sum=0; int a[50]; for (int i = 1; i < num; i++){ if (num%i == 0){ a[index] = i; index++; sum += i; } } //打印数据 //更多精彩内容:http://www.bianceng

Basic求10000以内的完美数_vb

完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身. Dim a as Integer,b as Integer,c as Integer For a = 1 To 10000 c = 0 For b = 1 To a \ 2 If a Mod b = 0 Then c = c + b Next b If a = c Then Print Str(a) Next a 另附上java版的代码 im

c语言-C语言完数问题,新手求指点~谢谢

问题描述 C语言完数问题,新手求指点~谢谢 C语言课后习题,求1000以内的完数,按以下格式输出: 6 its factors are 1,2,3 为什么我改成和答案一样的都输出空., 代码如下:#include int main() { int m,i,s; for(m=2;m<1000;m++)//2-1000个数 { s=0; for(i=1;i<=m;i++) if((m%i)==0)s=s+i; if(s==m) { printf("%d,its factors are&q

HDU 1406 完数 (数论)

完数 http://acm.hdu.edu.cn/showproblem.php?pid=1406 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem Description 完数的定义:如果一个大于1的正整数的所有因子之和等于它的本身,则称这个数是完数,比如6,28都是完数:6=1+2+3:28=1+2+4+7+14. 本题的任务是判断两个正整数之间完数的个数. Inp

JAVA 求1~1000之间的连数相加

问题描述 例如:3=1+2,15=7+8,100=18+19+20+21+22.求1000以内有多少这样的数,分别是哪些数? 解决方案 解决方案二:题目描述的不清楚,3=1+2算的话,那1+2=3呢?3+4=7呢?1+2+3+4=10呢?解决方案三:确实啊没说清楚按lz的意思5=2+37=3+49=4+5....那么至少所有奇数都能成立啊解决方案四:楼主的意思是不是说:连续的数字相加等于1~1000之内的数,这样的组合有多少个?解决方案五:100内的,把100都改成1000看看是不是你要求的pu

《C语言及程序设计》实践参考——完数

返回:贺老师课程教学链接  项目要求 [项目1-完数]一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数.(1)输入一个数n,判断n是否是完数[参考解答] 解1: #include <stdio.h> int main( ) { int n,s,m; printf("输入n:"); scanf("%d", &n); s=1; //s代表因子和.1是任何数的因

JS实现1000以内被3或5整除的数字之和_javascript技巧

今天在技术群里看到一道这样的提:求1000以内被3或5整除的数字之和.其中看到很有趣的解法二,最开始还是挺迷惑的,后来想了下,再经人指点,就觉得茅塞顿开. 第一种解法很普遍,就是将1000以内的数都遍历一遍,只要有整除3或者整除5的数,就将其加起来,最终得到一个总的和. 让我感兴趣的是第二种解法,这里巧妙运用了数学上的等差数列 一个公差为的等差数列前项的级数为: 第二种方法第一步就用了(a1+an)/3*3,所以就变成了3*(1+333)*333/2,这一步就是把整除3的所有项都加起来. 同理,

2014秋C++第10周项目5参考-输出完数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.   [项目5:输出完数](课本p86第20题)一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3,再如8的因子和是7(即1+2+4),8不是完数.编程找出1000以内的所有完数.提示:首先从2到1000构造循环控制变量为i的外层循环.每次循环中,利用内

输出从1到1000以内所有的完全平方数和完全立方数

问题描述 输出从1到1000以内所有的完全平方数和完全立方数 输出从1到1000以内所有的完全平方数和完全立方数 如下例: 1 4 8 9 16 25 27 -- 求代码!!!!!! !!!!!!! !!!!!!! 解决方案 少年要好好学习,不能只求代码啊. 感觉你要求的东西只要好好学一下就能自己写出来了吧.. 而且你没说清楚需要什么语言的代码=.= 解决方案二: #include <math.h> #include <iostream.h> using namespace std