【poj 3292】Semi-prime H-numbers

来源:互联网 发布:os x 下载软件 编辑:程序博客网 时间:2024/06/06 21:29

题目链接:
http://poj.org/problem?id=3292
题意:
定义一种数叫H-numbers,它是所有能除以四余一的数。

在H-numbers中分三种数:

1、H-primes,这种数只能被1和它本身整除,不能被其他的H-number整除,例如9是一个H-number,能被1,3,9整除,但3不是H-number,所以他是H-primes。

2、H-semi-primes是由两个H-primes相乘得出的。

3、剩下的是H-composite。

问给一个数,求1到这个数之间有多少个H-semi-primes。
题解:
注意他所定义的H-primes,并不是普通的素数,是由特殊的素数(23333),所以可以用特殊的素数筛法,直接一边将答案筛出来,简单说就是打表。
代码:

#include<iostream>#include<algorithm>#include<stdio.h>#define maxn (1000500)using namespace std;int n,sum,vis[maxn],pri[maxn];//vis[i] 为0表示是H-primes 为1表示为H-semi-primes 为-1表示是H-compositeint main(){    for (int i=5;i<=maxn;i+=4)    for (int j=5;j<=maxn;j+=4)    if (i*j>maxn) break;    else if (vis[i]==0&&vis[j]==0)    vis[i*j]=1;    else vis[i*j]=-1;    for (int i=1;i<=maxn;i++)    {        if (vis[i]==1) sum++;        pri[i]=sum;    }    while(scanf("%d",&n))    {        if (n==0) return 0;        printf("%d %d\n",n,pri[n]);    }}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米电视滚动字幕模糊怎么办 海信电视浑的看不清怎么办 电视打开特别暗看不清怎么办 诈骗电话按了键怎么办 上海油电混合送沪牌以后怎么办? 车子被前夫砸了怎么办 老的标书丢了怎么办 拍牌照的标书掉了怎么办 上海拍到车牌后怎么办 杭州4s店车牌怎么办 天津车牌有指标想买车怎么办 上海大牌拍中了怎么办 买新车牌下不了怎么办 临沂上小学没报上名怎么办 早教中心倒闭了怎么办 企业税没交联系不上法人怎么办 企业被拉黑法人联系不到怎么办 支票根写错了怎么办 月结客户不付款怎么办 退市整理期过了怎么办 老板跑了财务负责人怎么办 在南京加入嘀嘀代驾怎么办 苹果盗刷支付宝怎么办 街电支付宝掉了怎么办 转转上号器没有苹果版的怎么办 安卓6不支持的应用怎么办 银行卡被存款机吞了怎么办 去银行卡存款机器故障怎么办 银行卡存款没有存进去怎么办 被黑网站黑钱了怎么办 饿了吗账户异常怎么办 单位里有人整你怎么办 乌鲁木齐信息采集结束后怎么办 头发很长时间不长怎么办啊 打嘟噜时间不长怎么办 阴茎勃起的时间不长怎么办 睡觉的时间不长怎么办 每次锻炼时间不长怎么办 微信好友不知道是谁怎么办 就一个软件闪退怎么办 葫芦侠修改闪退怎么办