題目內容: 一個正整數的因數是所有可以整除它的正整數。而一個數如果恰好等於除它本身外的因數之和,這個數就稱為完數。例如6=1+2+3(6的因數是1,2,3)。 現在,你要寫一個程式,讀入兩個正整數n和m(1<=n<m<1000),輸出[n,m]範圍內所有的完數。 提示:可以寫一個函數來判斷某個數是否 ...
題目內容:
一個正整數的因數是所有可以整除它的正整數。而一個數如果恰好等於除它本身外的因數之和,這個數就稱為完數。例如6=1+2+3(6的因數是1,2,3)。
現在,你要寫一個程式,讀入兩個正整數n和m(1<=n<m<1000),輸出[n,m]範圍內所有的完數。
提示:可以寫一個函數來判斷某個數是否是完數。
輸入格式:
兩個正整數,以空格分隔。
輸出格式:
其間所有的完數,以空格分隔,最後一個數字後面沒有空格。如果沒有,則輸出一個空行。
輸入樣例:
1 10
輸出樣例:
6
時間限制:500ms記憶體限制:32000kb
1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 Scanner in = new Scanner(System.in); 8 9 int n=in.nextInt();//輸入n 10 int m=in.nextInt();//輸入m 11 int count=0;//統計輸出完數個數 12 13 for(;n<m;n++) 14 { 15 if(perfect(n))//如果n是完數 16 { 17 if(count>0)//非首個完數,輸出空格 18 { 19 System.out.print(" "); 20 } 21 System.out.print(n); 22 count++; 23 } 24 else//如果n不是完數 25 { 26 continue;//n自增,進入下個迴圈 27 } 28 } 29 } 30 31 public static boolean perfect(int n)//判斷n是否完數 32 { 33 boolean isPer;//是否完數 34 int sum=0;//因數之和 35 for(int i=1;i<n;i++) 36 { 37 if(n%i==0)//如果i是n的因數 38 { 39 sum=sum+i; 40 } 41 else 42 { 43 continue;//如果不是進入下個迴圈 44 } 45 } 46 if(sum==n)//如果是完數 47 { 48 isPer=true; 49 } 50 else//如果不是 51 { 52 isPer=false; 53 } 54 55 return isPer;//返回判斷結果 56 } 57 }