這次是找pair數。
n = 4要另外處理。
其他的從3開始算到n / 2即可。
/* ACM 686 Goldbach's Conjecture (II)
* mythnc
* 2011/11/07 17:45:42
* run time: 0.016
*/
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int countp(int);
int prime(int);
int main(void)
{
int n;
while (scanf("%d", &n) && n != 0)
printf("%d\n", countp(n));
return 0;
}
/* countp: return the pair numbers match
* Goldbach's Conjecture */
int countp(int n)
{
int i, count;
if (n == 4)
return 1;
for (count = 0, i = 3; 2 * i <= n; i += 2)
if (prime(i) && prime(n - i))
count++;
return count;
}
/* prime: return TRUE if n is prime,
* else return FALSE */
int prime(int n)
{
int i;
for (i = 3; i * i <= n; i += 2)
if (n % i == 0)
return FALSE;
return TRUE;
}
沒有留言:
張貼留言