您的位置:首页 > 其它

pku3292 Semi-prime H-numbers

2010-03-15 19:12 316 查看
题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=3292

题意简述:难描述,只说说这里面的H-prime不是通常的素数,假设n是H-prime,那么n不是1或n不可以分解成两个数(这两个数是H-number)的乘积。

解题思路:筛选。看懂题了就好办了,开始没看懂题感到纳闷,英语太烂。

代码:

#include<cstdio>
#include<string.h>
using namespace std;
const int Len=1100000;
int f[Len];
int dp[Len];
int main()
{
__int64 tt;
for(int i=1;i<=1000001;i+=4) f[i]=0;
for(int i=5;i<=1050;i+=4)
if(!f[i])
{
int temp=i;
tt=temp*i;
if(tt>1000001) break;
while(tt<=1000001)
{
if(f[i]==0&&f[temp]==0) f[tt]=1;
else f[tt]=2;
temp+=4;
tt=temp*i;
}
}
dp[0]=0;
int k=0;
for(int i=1;i<=1000001;i+=4)
{
dp[i]=dp[i-4];
if(f[i]==1) ++dp[i];
}
memset(f,0,sizeof(f));
int n;
while(scanf("%d",&n)&&n)
printf("%d %d/n",n,dp
);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: