10000以內完全數與判斷是否為完全數java編譯
阿新 • • 發佈:2019-01-01
本文為博主原創,接受意見,不喜勿噴!
10000以內完全數與判斷是否為完全數java編譯
1. 完全數(Perfect number)定義
又稱完美數或完備數,是一些特殊的自然數。
它所有的真因子(即除了自身以外的約數)的和(即因子函式),恰好等於它本身。
例:6=1+2+3。1、2、3都是6的因子。 28=1+2+4+7+14。
例1:求10000以內的完全數的個數。
思路分析:
1.第一層迴圈是遍歷10000以內的所有數;
2.第二層迴圈遍歷10000以內的數的所有因子,判斷條件為小於等於i/2是因為每個整數的最大因子不超過它的一半;
3.如果i能被j整除,才去獲取它的因子,然後每獲取到一個因子就把它累加到count中;
4.然後判斷當前數的所有因子的和與當前數是否相等,如果相等,列印輸出。
程式碼如下:
import java.util.Scanner; public class WanShu { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ int N = in.nextInt(); int count = 0; for(int i=1;i<=N;i++){ int sum=0; for(int j=1;j<i;j++){ if(i%j==0) sum+=j; } if(sum==i) count++; } System.out.println(count); } } }
結果:
例2 判斷是否完全數
從鍵盤輸入一個整數,判斷該數是否是完全數,如果是完全數,則輸出yes,否則,輸出no。完全數是指其所有因數(包括1但不包括其自身)的和等於該數自身的數。例如:28=1+2+4+7+14就是一個完全數。
輸入樣例:
在這裡給出一組輸入。例如:
28
輸出樣例:
在這裡給出相應的輸出。例如:
yes
思路分析:
1.Scanner in = new Scanner(System.in); int N = in.nextInt();
第一層迴圈遍歷N以內的數的所有因子,判斷條件為小於等於i/2是因為每個整數的最大因子不超過它的一半;
2.如果i能被j整除,才去獲取它的因子,然後每獲取到一個因子就把它累加到sum中;
3.然後判斷當前數的所有因子的和與當前數是否相等,如果相等,列印輸出yes,不相等,列印輸出no。
程式碼如下:
import java.util.Scanner;
public class WanShu2 {
public static void main(String[] args) {
int sum=0;
Scanner in = new Scanner(System.in);
int N = in.nextInt();
for(int i=1;i<=N/2;i++){
if(N%i==0)
sum=sum+i;}
if(sum == N )
System.out.println("yes");
else
System.out.println("no");
}
}
本程式碼比較簡陋,大家還可以在此基礎上進行優化