您的位置:首页 > 其它

Hdu 2098 分拆素数和

2012-08-25 11:28 246 查看
简单模拟。

CODE:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;

const int SIZE = 10001;

int prime[SIZE];
int vis[SIZE] = {0};
int cnt;

void init()
{
int i, j;
cnt = 0;
for(i = 2; i < SIZE ; i++) if(!vis[i])
{
prime[cnt++] = i;
for(j =i*i; j < SIZE; j+=i) vis[j] = 1;
}
}

int is_prime(int n )
{
int i, j;
int m = (int)sqrt(n+0.5);
for(i = 2; i <= m; i++)
{
if(n%i == 0) return 0;
}
return 1;
}

int main()
{
int i, j;
int n;
init();
while(scanf("%d", &n), n)
{
int cnt = 0;
for(i = 0; i < SIZE && prime[i] < n/2; i++)
{
int dif = n-prime[i];
if(is_prime(dif)) cnt++;
}
printf("%d\n", cnt);
}
return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: