【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
- POJ 3292 Semi-prime H-numbers
- poj 3292 Semi-prime H-numbers
- poj 3292 Semi-prime H-numbers
- POJ 3292 Semi-prime H-numbers
- poj-3292-Semi-prime H-numbers
- POJ 3292 Semi-prime H-numbers
- POJ 3292 Semi-prime H-numbers
- POJ-3292-Semi-prime H-numbers
- POJ 3292 Semi-prime H-numbers
- poj 3292 Semi-prime H-numbers
- POJ 3292 Semi-prime H-numbers
- POJ 3292--Semi-prime H-numbers
- POJ 3292 Semi-prime H-numbers
- POJ 3292 Semi-prime H-numbers
- poj 3292 Semi-prime H-numbers 筛数打表
- POJ 3292 - Semi-prime H-numbers(数学)
- 【POJ 3292】 Semi-prime H-numbers
- Semi-prime H-numbers(POJ--3292
- 在DLL中获取自身的路径
- Codeforces 659G Fence Divercity (组合计数)
- Android开源项目分类汇总(六)工具库
- Linux修改内核使得普通用户可以打印kmsg内容
- 网络数据传输的封装
- 【poj 3292】Semi-prime H-numbers
- Flask、uWSGI and Nginx on Ubuntu 14.04
- ExecutorService的几种关闭线程池方法
- 貞觀 宋哲和 先生 墓所探訪
- <css 四>a href
- (4.6.9)Android属性allowBackup安全风险浅析
- Android Studio使用总结 [未完待续]
- linux的挂载磁盘步骤
- 【有毒的设计模式】代理模式