您的位置:首页 > 编程语言

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

2017-03-14 08:37 686 查看
/**
2017年3月3日16:43:50
java基础50道经典练习题 例9
Athor:zjy
Purpose:完数的计算
什么是数的因子?因子就是所有可以整除这个数的数,不包括这个数自身.  
因数包括这个数本身而因子不包括,如:比如15的因子是1,3,5 而因数为1,3,5,15.  
完数是指此数的所有因子之和等于此数,例如:28=1+2+4+7+14.
定义:某自然数除它本身以外的所有因子之和等于该数,则该数被称为完数。
【程序9】
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。
例如6=1+2+3.编程找出1000以内的所有完数。

*/
import java.util.Scanner;

public class ProgramNo9_1
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int range = sc.nextInt();
compNumber(range);

}
private static void compNumber(int range) {
int completeNumber = 0;

System.out.print(range + "内的完数有: ");
for (int num=2; num<range+1; num++) {
int sum = 1;
for (int i=2; i<num+1; i++) {
if((0 == num%i)&&(i != num)) {
sum += i;
}
}
if(sum == num) { //完数等于它除本身因数外的所有因子的和
completeNumber++;
System.out.print(num + " ");
if(0 == completeNumber%10)
System.out.println();
}
}
System.out.println("共: " + completeNumber + "个");

}

}
/**
2017年3月3日16:43:50
java基础50道经典练习题 例9
Athor:zjy
Purpose:完数的计算
*/

public class ProgramNo9_2
{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int range = sc.nextInt();
compNumber(range);
}

//求完数
private static void compNumber(int range){
int count = 0;
System.out.println(range + "以内的完数:");
for(int i=1; i<range+1; i++) {
int sum = 0;
for(int j=1; j<i/2+1; j++) { //只有除以数的二分之一以下的数即可
if((i%j) == 0) {
sum += j;
if(sum == i) {
System.out.print(i + " ");
if((count++)%5 == 0)
System.out.println();
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐