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;}
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;}
相关文章推荐
- HDU 2098 分拆素数和
- hdu 2098 分拆素数和
- [HDU](2098)分拆素数和---穷举法和哥德巴赫猜想
- hdu 2098 分拆素数和(水题)
- hdu-2098-分拆素数和。。。
- hdu 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU2098——分拆素数和
- HDU_2098 分拆素数和
- HDU - 2098-分拆素数和
- hdu 2098 分拆素数和
- hdu 2098 - 分拆素数和
- hdu 2098 分拆素数和 悲剧超时了。
- HDU 2098 - 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和
- HDU 2098 分拆素数和(素数)
- hdu 2098 分拆素数和
- HDU 2098 分拆素数和
- Hdu 2098 分拆素数和