(TOJ1432)分拆素数和

描述

把一个偶数拆成两个不同素数的和,有几种拆法呢?

输入

输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。

输出

对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。

样例输入

30

26

0

样例输出

3

2
 1 #include<stdio.h>

 2 #include<string.h>

 3 #include<ctype.h>

 4 #include<math.h>

 5 

 6 int isprim(int n)

 7 {

 8     int i;

 9     for(i=2; i*i<=n; i++)

10     {

11         if(n%i==0)

12           return 0;

13     }

14     return 1;

15 }

16 

17 void deal(int n)

18 {

19     int i,m,s=0;

20     m=n/2;

21     for(i=3; i<m; i=i+2){

22         if(isprim(i) && isprim(n-i))

23             s++;

24     }

25     printf("%d\n",s);

26 }

27 

28 void solve()

29 {

30     int n;

31     while(scanf("%d",&n) && n){

32         deal(n);

33     }

34 }

35 

36 int main()

37 {

38     solve();

39     return 0;

40 }
 

你可能感兴趣的:(素数)