1. 程式人生 > >POJ-1316(類素數篩選法)

POJ-1316(類素數篩選法)

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


#include <cstdio>

const int MAX_N = 10000;
bool generated[MAX_N + 1] = {0};

int sumDigits(int x)
{
	int sum = 0;
	for( ; x; x /= 10){
		sum += x % 10;
	}
	return sum;
}

int main()
{
	for(int i = 1; i <= MAX_N; ++i){
		if(!generated[i]){
			printf("%d\n", i);
			for(int x = i; x <= MAX_N && !generated[x]; x += sumDigits(x)){
				generated[x] = true;
			}
		}
	}
	return 0;
}


相關推薦

POJ-1316素數篩選

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

POJ 3292 Semi-prime H-numbers素數

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

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

poj 3126 BFS + 素數打表

The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room num

演算法提高 素數求和 藍橋杯 篩選

/*  演算法提高 素數求和  問題描述  輸入一個自然數n,求小於等於n的素數之和樣例輸入2樣例輸出2資料規模和約定  測試樣例保證 2 <= n <= 2,000,000*/#include <stdio.h>#include <stdlib

1059 Prime Factors 25 分厄拉多塞素數篩選

題目 Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format

打表解素數問題篩選

1、最大素因子 #include<stdio.h> #define max 1000010 int a[max]={0}; void num_prime() {     int i,j,x=0;     for(i=2;i<max;i++)     {  

POJ 2689 Prime Distance-卡時間-素數

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

POJ:3292-Semi-prime H-numbers艾氏篩選拓展

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

poj 2689 Prime Distance大數區間素數

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

小於等於n的素數的個數埃式篩選和尤拉篩選

問題描述 給定數字n,求出小於等於n的素數的個數,假設n<=1000000 思路 找出數字n之前的所有素數,用陣列isprime[i]表示i是否是素數;用num[i]表示小於等於數字i的素數有多少。 那麼最重要的就是解決判斷一個數是否是素數 方法

素數篩選 求1~n的素數

1、下面是求1~n的素數的一般方法: //求1~n的素數一般方法 #include<iostream> using namespace std; int main() { int n,i,j,k=1; bool bo; cin>>n

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

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

18.12.10 POJ 3450 Corporate Identity字尾陣列+二分

描述 Beside other services, ACM helps companies to clearly state their “corporate identity”, which includes company logo but also other signs, like trademar

poj 3111 K Best 牛頓迭代

牛頓迭代法參考連結:我愛維基 首先,選擇一個接近函式零點的,計算相應的和切線斜率(這裡表示函式的導數)。然後我們計算穿過點並且斜率為的直線和軸的交點的座標,也就是求如下方程的解: 我們將新求得的點的座標命名為,通常會比更接近方程的解。因此我們現在可以利用開始下一輪迭代。迭代公式可化

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

(轉載)O(N)的素數篩選和歐拉函數

算法與數據結構 變形 技術 範圍 n) border {} 數據 eps 轉自:http://blog.csdn.net/dream_you_to_life/article/details/43883367 作者:Sky丶Memory 1.一個數是否為質數的判定.

素數篩選

return img rim -a clas font clu als bool 素數篩選法 素數(又稱質數):指在大於一的自然數中,只能被1和它自身整除的自然數; 素數篩選法是指一種非常規的素數判定方法,比較高效率; 原理:任何數的整數倍必定不是素數,大於二的

POJ 3970最小公倍數LCM

con html sso assume rate tput p s soc employ ?? 知識點: 最小公倍數(a,b)=a*b/最大公約數(a。b)

java 靜態變量生命周期生命周期

targe ref 鍵值對 靜態代碼塊 經歷 per tails jvm的內存 代碼 轉載自:http://www.cnblogs.com/hf-cherish/p/4970267.html 侵刪 Static: 加載:java虛擬機在加載類的過程中為靜態變量分配