您的位置:首页 > 其它

POJ 3292 Semi-prime H-numbers

2013-11-24 16:24 387 查看
http://poj.org/problem?id=3292

题意 :表示这个题我真的没看懂。。。大意是讲:对于4*n+1(n为自然数)组成的集合H-numbers,乘法在该集合中是封闭的,在该集合内,只能被1和自身整除的为H-primes,然后由两个 H-primes的乘积为H-semi-prime,给你一个数k,让你求从1到k有多少个H-semi-prime。

思路 :一开始没看懂题也就不知道意思,其实看来这道题就是枚举嘛。

#include <iostream>
#include <string.h>

using namespace std;

const int maxn = 1000201 ;
int h_prime[maxn] ;
int h_number[maxn] ;

void prime()
{
int cnt ;
for(int i = 5 ; i < maxn ; i += 4)
for(int j = 5 ; j < maxn ; j += 4)
{
cnt = i*j ;
if(cnt > maxn)
break ;
if(h_prime[i] == 0&&h_prime[j] == 0)
h_prime[cnt] = 1 ;
else h_prime[cnt] = 2 ;
}
}
int main()
{
memset(h_prime,0,sizeof(h_prime)) ;
prime() ;
int cnt = 0 ;
for(int i = 1 ; i < maxn ; i++)
{
if(h_prime[i] == 1)
cnt++ ;
h_prime[i] = cnt ;
}
int k ;
while(cin>>k && k)
{
cout<<k<<" "<<h_prime[k]<<endl ;
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: