java 求1到n之間的所有完數,並輸出各個因子
阿新 • • 發佈:2019-01-02
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();
}
}
}
}
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();
}
}
}
}