1. 程式人生 > >10000以內完全數與判斷是否為完全數java編譯

10000以內完全數與判斷是否為完全數java編譯

本文為博主原創,接受意見,不喜勿噴!

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");
		
	}
}

例2
3
本程式碼比較簡陋,大家還可以在此基礎上進行優化