Sum of Consecutive Prime Numbers
題目:一些正整數能夠表示為一個或多個連續質數的和。對某個正整數,列出連續質數的和的表示數。
輸入:輸入一個少於10000的正整數,直至輸入0表示結束
輸出:對於每一個輸入的正整數,列出連結質數的和的表示數,輸出中沒有其它的字元
import java.util.Scanner; public class SumOfConsecutivePrimeMumbers { static final int maxp = 2000, n = 10000; //設定質數表長和輸入值的上限 static int prime[] = new int[maxp], total = 0; //質數表和表長初始化為0 public static void main(String[] args) { for(int i = 2; i <= n; i++) //預先建立質數表 if(isprime(i)) prime[total++] = i; prime[total] = n + 1; int m; Scanner scanIn = new Scanner(System.in); //輸入第1個正整數 m = scanIn.nextInt(); while(m > 0) { //迴圈,直至輸入正整數0為止 int ans = 0; //初始化為0 for(int i = 0; m >= prime[i]; i++) { //列舉最小質數 int cnt = 0; //求連續質數的和 for(int j = i; j < total && cnt < m; j++) cnt += prime[j]; if(cnt == m) //若和恰等於m,則累計答案數 ++ans; } System.out.println(ans + "組表示法"); //輸出答案數 scanIn = new Scanner(System.in); //輸入下一個正整數 m = scanIn.nextInt(); } } public static boolean isprime(int k) { //判定k是否為質數 for(int i = 0; i < total; i++) if(k % prime[i] == 0) return false; return true; } }
鏈結到這頁!