分拆素数和
Problem Description 把一個偶數拆成兩個不同素數的和,有幾種拆法呢? Input 輸入包含一些正的偶數,其值不會超過10000,個數不會超過500,若遇0,則結束。 Output 對應每個偶數,輸出其拆成不同素數的個數,每個結果占一行。 Sample Input 30 26 0 Sample Output 3 2 1 #include <stdio.h>
2 #include <string.h>
3 #include <math.h>
4 #define N 10001
5
6 int main(){
7 char flag[N];
8 int i;
9 int j;
10 int number;
11 int amount;
12
13 memset(flag,'0',N);
14 flag[0]='1';
15 flag[1]='1';
16
17 for(i=2;i<=sqrt(N);i++){
18 if(flag[i]=='0'){
19 for(j=i*i;j<N;j+=i)
20 flag[j]='1';
21 }
22 }
23
24 while(1){
25 amount=0;
26 scanf("%d",&number);
27
28 if(number==0)
29 break;
30
31 for(i=0;i<=number;i++){
32 if(flag[i]=='0' && flag[number-i]=='0')
33 amount++;
34 }
35
36 printf("%d\n",amount/2);
37 }
38
39 return 0;
40 }
?
轉載于:https://www.cnblogs.com/zqxLonely/p/4054226.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: 天气预报API使用心得
- 下一篇: 记录到日志中的异常栈缺失