1. 程式人生 > >POJ 3292(艾氏篩法)

POJ 3292(艾氏篩法)

題意:

H-number:4n+1

H-prime:H-number並且只有兩個H-number因子1和他本身

H-semi-number:為兩個H-number數的乘積

H-semi-prime:H-prime&&H-semi-number

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;

const int INF=0x3f3f3f3f;
const int maxn=1000010;
int n,pNum;
int Hnumber[maxn];

void HnumberTable(){
	memset(Hnumber,0,sizeof(Hnumber));
	for(int i=5;i<maxn;i+=4){
		for(int j=5;j<maxn;j+=4){
			if(i*j>1000010) break;
			if(!Hnumber[i]&&!Hnumber[j])
				Hnumber[i*j]=1;
			else
				Hnumber[i*j]=2;
		}
	}
	int hNum=0;
	for(int i=1;i<maxn;i++){
		if(Hnumber[i]==1)
			hNum++;
		Hnumber[i]=hNum;
	}
}

int main(){
#ifndef ONLINE_JUDGE
	freopen("test.in","r",stdin);
	freopen("test.out","w",stdout);
#endif
	HnumberTable();
	while(~scanf("%d",&n)&&n){
		printf("%d %d\n",n,Hnumber[n]);
	}
	return 0;
}


相關推薦

POJ 3292

題意: H-number:4n+1 H-prime:H-number並且只有兩個H-number因子1和他本身 H-semi-number:為兩個H-number數的乘積 H-semi-prime:H-prime&&H-semi-number #inclu

POJ3292-Semi-prime H-numbers篩選拓展

Semi-prime H-numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10466 Accepted: 4665 Description

POJ 3292 Semi-prime H-numbers類素數

Description This problem is based on an exercise of David Hilbert, who pedagogically suggested tha

POJ 2478 歐拉函數歐拉 HDU 1576 逆元求法

ios size col add 求和 。。 結果 names const 相關逆元求法,我之前有寫過,還有歐拉函數的求法,歐拉函數與逆元的關系 點擊POJ 2478又是一個打表的題目,一眼看出結果就是前n個歐拉函數值的和。這裏直接計算歐拉函數值求和會超時,看見多組數據。

求素數個數和尤拉

求1——n的素數的個數,有以下三種方法: 普通的O()演算法: #include<iostream> #include<cstdio> #include<cmath> using namespace std; bool isprim

洛谷P2640 神秘磁石歐拉

for names pty AI 註意 坐標 class 長度 syn 題目背景 在遙遠的阿拉德大陸,有一種神秘的磁石,是由魔皇制作出來的, 題目描述 1.若給他一個一維坐標系,那麽他的磁力一定要在素數坐標的位置上才能發揮的最大(不管位置坐標的大小,只要是素數那麽磁力就一樣

POJ-1316類素數篩選

分析:如果按照定義對每個數進行判斷則需要O(N*N)的時間,但用類似篩素數的思想,我們可以mark出所有不滿足條件的,自然而然的就可以輸出滿足條件的了,時間複雜度是O(Nlog10(N)) #include <cstdio> const int MAX_N

Poj 3292變形

Semi-prime H-numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6750 Accepted: 2

求n以內有多少個素數

cin algorithm memset fin lse mod pre 判斷 end 題目大意:給定整數n,請問n以內有多少個素數 思路:想必要判斷一個數是否是素數,大家都會了,並且可以在O(根號n)的復雜度求出答案,那麽求n以內的素數呢,那樣求就顯得有點復雜了,下面看一

數論_埃求區間內多少素數

埃拉託斯特尼(公元前276—公元前194) 埃拉託斯特尼是古希臘著名的數學家、地理學家、天文學家。他先在亞歷山大港學習,後又轉至雅典。公元前236年,托勒密三世指定他為亞歷山大圖書館的圖書管理員和館長。他跟阿基米德是好朋友。埃拉託斯特尼的主要貢獻包括: 埃拉託斯特尼篩法:尋找素數的方法。 地理常數測量:

3292Semi-prime H-numbers素數的擴充套件

題目大意: 給定4n+1數(1、5、9、13、……)。將這些數分為unit(即為1)和prime(不是真正的素數),composite。規定一個semi-prime數為可為兩個prime數乘積。題目給定一個4n+1數,要判斷1~4n+1數之間(包含1和該4n+1數)的所有

數論 之 總結托拉斯特尼+尤拉

1.篩法: 2.埃拉託斯特尼篩法(素數/質數篩選法): 2.1 步驟:      給出要篩數值的範圍n,找出以內的素數。先用2去篩,即把2留下,把2的倍數剔除掉;再用下一個素數,也就是3篩

POJ 2689 Prime Distance素數區間--經典題

大致題意:給定[L,R]區間,找出區間內的每個素數 資料範圍 : 1<=L< R<=2,147,483,647) R-L <=1,000,000. R的數值太大,所以不能直接篩

POJ 2689 Prime Distance-卡時間-素數

題意:給定兩個數l,r求這之間最近和最遠的兩個素數。資料範圍是整數的上限。r-l<=10^6 分析:總思路是把l和r間的素數全部找出來,然後遍歷一遍求最小距離和最大距離。用一個函式預處理資料範圍內的所有素數是不現實的,一來陣列不可r能開那麼大二來會超時。想想素數篩的思

poj 2689 Prime Distance大數區間素數

題意:給定區間[L,R],求區間內距離最近的相鄰素數對和距離最遠的相鄰素數對,區間長度不超過1e6。 解題方案:用篩法求出[L,R]的所有素數——利用“合數n一定有小於或等於sqrt(n)的素數因子“這條性質,先預處理出sqrt(2,147,483,647)範圍內的所有素

3292 Semi-prime H-numbers素數

先求所有的H-pirme,所有的H-prime兩兩相乘打表。 注: 1、H-numbers是所有除以4餘1的數,而H-prime則是隻能在這些H-numbers中分解因式只得到1*本身的數(1除外)。所以9也是H-prime(原來理解錯了)。 2、 H-semi-prim

POJ 3421 X-factor Chains數論

X-factor Chains Time Limit:1000MS Memory Limit:65536K Total Submissions:6370 Accepted:1973 Descr

區間內素數的個數也要用到埃

-s true str i++ 限制 col 同時 ostream als 題目大意:給定正整數a和b,請問區間[a,b)內有多少個素數 限制條件:a<b<=10^12 b-a<=10^6 樣例: 22 37 3 22801763489 228017

歐拉線性與解積性函數

日常 rime ++ 下午 nbsp http image 發現 details 日常吐槽:嘖嘖嘖今天真是玄幻的一天。早上睡到9:10發現睡過了一個半小時,在9:30狂奔來機房 + 吃早餐,最後只剩一個半小時心態崩—>光榮爆零???又在下午四點把全部題改完

洛谷P2568 GCD線性

題目連結:傳送門 題目: 題目描述 給定整數N,求1<=x,y<=N且Gcd(x,y)為素數的數對(x,y)有多少對. 輸入輸出格式 輸入格式: 一個整數N 輸出格式: 答案 輸入輸出樣例 輸入樣例#1: 複製 4 輸出樣例#1: 複製 4 說明 對於