Java50道经典习题-程序9 求完数

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

 1 public class Prog9 {
 2     public static void main(String[] args) {
 3         int n=1000;
 4         compNumber(n);
 5     }
 6     //求完数
 7     private static void compNumber(int n) {
 8         System.out.println(n+"以内的完数:");
 9         for(int i=1;i<n+1;i++) {
10             int sum=0;
11             for(int j=1;j<i/2+1;j++) {
12                 if((i%j)==0) {
13                     sum+=j;
14                     if(sum==i) {
15                         System.out.print(i+" ");
16                     }
17                 }
18             }
19         }
20     }
21 }
22 /*运行结果
23 1000以内的完数:
24 6 24 28 496
25 */

原文地址:https://www.cnblogs.com/parkour1026/p/10796884.html

时间: 2024-10-27 13:06:13

Java50道经典习题-程序9 求完数的相关文章

Java50道经典习题-程序20 求前20项之和

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.分析:请抓住分子与分母的变化规律.三个连续分数之间的规律是:上两个分子之和等于第三个分数的分子,上两个分母之和等于第三个分数的分母 1 public class Prog20{ 2 public static void main(String[] args){ 3 double n1 = 1; 4 double n2 = 1; 5 double fraction = n1/n2; 6 dou

Java50道经典习题-程序21 求阶乘

题目:求1+2!+3!+...+20!的和分析:使用递归求解 0的阶乘和1的阶乘都为1 public class Prog21{ public static void main(String[] args){ long sum=0L; for(int i=1;i<=20;i++) { sum+=factorial(i); } System.out.println(sum); } //递归求阶乘 public static long factorial(int n) { if(n==0||n==1

Java50道经典习题-程序11 求不重复数字

题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 1 public class Prog11 { 2 public static void main(String[] args) { 3 int count=0; 4 int n=0; 5 for(int i=1;i<5;i++) { 6 for(int j=1;j<5;j++) { 7 if(i==j) 8 con

Java50道经典习题-程序19 输入行数打印菱形图案

题目:根据用户输入的行数打印菱形图案,若用户传入的是为偶数则提示用户重新输入,例如输入数字7打印出如下菱形图案   *  *** ************ *****  ***   *分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列. 1 import java.util.Scanner; 2 public class Prog19 { 3 public static void main(String[] args) { 4 Sca

Java50道经典习题-程序13 根据条件求数字

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?分析:完全平方数:如果一个数能是由两个相同的数相乘的结果,那么这个数就是完全平方数,例如:9==3*3:9就是完全平方数.在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果. 1 public class Prog13 { 2 public static void main(String[] args) { 3 int n=0; 4 for

Java50道经典习题-程序22 递归求阶乘

题目:利用递归方法求5!.分析:递归公式:n*factorial(n-1); 1 public class Prog22 { 2 public static void main(String[] args) { 3 System.out.println(factorial(5)); 4 } 5 //递归求阶乘 6 public static long factorial(int n) { 7 if(n==0||n==1) { 8 return 1L; 9 } 10 return n*factor

Java50道经典习题-程序8 输入数字求和

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制. 分析:关键是计算出每一项的值. 1 import java.util.Scanner; 2 public class Prog8{ 3 public static void main(String[] args){ 4 System.out.print("求s=a+aa+aaa+aaaa+...的值,请输入a的值:");

Java50道经典习题-程序12 计算奖金

题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:    利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:    20万到40万之间时,高于20万元的部分,可提成5%:    40万到60万之间时高于40万元的部分,可提成3%:    60万到100万之间时,高于60万元的部分,可提成1.5%,    高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 分析:请利用数轴来

Java50道经典习题-程序10 自由落体

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 1 import java.util.Scanner; 2 public class Prog10 { 3 public static void main(String[] args) { 4 System.out.println("请输入小球落地时的高度和求解的次数:"); 5 Scanner scan=new Scanner(System.in); 6