1. 程式人生 > >java 求1到n之間的所有完數,並輸出各個因子

java 求1到n之間的所有完數,並輸出各個因子

import java.util.Scanner;


public class wanshu {


/**
* 一個數如果恰好等於它的因子之和,這個數就稱為 "完數 "。
* 例如6=1+2+3.*/

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
System.out.print("請輸入要求完數的範圍:");
int n=scanner.nextInt();
WanShu(n);

}


//判斷是不是完數
public static void WanShu(int n) {

int i,j,sum;
for (i = 1; i < n; i++) {

sum=0;//每次迴圈,都對sum重新賦值
for (j = 1; j < i/2+1; j++) { //查詢因子
if (i%j==0) { //如果是因子,吧當前的因子累加到sum中
sum+=j;
}
}

if (sum==i) { //如果是完數,先輸出完數,再輸出這個完數的各個因子
System.out.print(i+" factors are:");

for (j = 1; j < i/2+1; j++) {
if (i%j==0) {//輸出各個因子
System.out.print(j+",");
}
}
System.out.println();
}
}
}
}