1. 程式人生 > >快速找出2到n所有的素數

快速找出2到n所有的素數

public static ArrayList<Integer> primeNumbers(int n) {
		if (n < 2) return null;
		ArrayList<Integer> list = new ArrayList<Integer>();
		boolean[] prime = new boolean[n + 1];
		for (int i = 2; i < n + 1; i++) {
			prime[i] = true;
		}
		for (int i = 2; i < Math.sqrt(n);i++) {
			if (prime[i]) {
				for (int j = i * i; j <= n; j += i) {
					prime[j] = false;
				}
			}
		}
		
		for (int i = 2; i <= n; i++) {
			if (prime[i] == true) {
				list.add(i);
			}
		}
		return list;
	}

Detailed introduction of this method: http://en.wikipedia.org/wiki/Sieve_of_eratosthenes

相關推薦

快速2到n所有素數

public static ArrayList<Integer> primeNumbers(int n) { if (n < 2) return null; ArrayList<Integer> list = new ArrayList

快速一個數組中的兩個數字,讓這兩個數字之和等於一個給定的值

http 知識 繼續 進一步 repl 有一個 tails 窮舉 too 我覺得寫得很清晰,希望沒有侵犯作者的著作權,原文地址http://blog.csdn.net/hackbuteer1/article/details/6699642 快速找出一個數組中的兩個數字,讓這

python的自省函數, 快速BUG的良器

\n lis key nac self instance reverse attr_ pop python內置的好多自省函數, 合理使用可快速查找相關提示, 快速找到問題點, 以下開始具體說明 1. dir() 列出對象的所有屬性和方法   如: dir(list

給一個詞典,其中所有最長的單詞。

題目 描述 給一個詞典,找出其中所有最長的單詞。 您在真實的面試中是否遇到過這個題? 樣例 在詞典 { “dog”, “google”, “facebook”, “internationalization”, “blabla” } 中, 最長的單詞集合為

快速一個數組中的最大數、第二大數

#include <stdio.h> int main() {         int a[] = {12, 159, 8, 1, 165, 122, 56, 99, 165};     int

python例項:快速多個字典中的公共鍵

1.生成隨機字典 # 從abcdefg 中隨機取出 3-6個,作為key, 1-4 的隨機數作為 value s1 = {x : randint(1, 4) for x in sample('abcdefg', randint(3, 6))} 方法1 用集合方法 s1 = {'c':

Eclipse整合Skept外掛,讓JSON更容易編寫,JS報錯可快速

平時寫JSON格式是使用profile檔案編寫的,JSON太長的話上個一個花括號都不懂哪裡到哪裡,Skept外掛是可以解決這種問題的其中一種。Eclipse沒有自帶對JS程式碼的編譯,所以沒有解析JS程式碼的報錯,skept同時也是一個良好的JS編輯器,可以看出JS程式碼哪裡

python的自省函式, 快速BUG的良器

python內建的好多自省函式,  合理使用可快速查詢相關提示, 快速找到問題點, 以下開始具體說明 1. dir()  列出物件的所有屬性和方法   如:  dir(list)  可以列出列表的所有屬性和方法   ['__add__', '__class__', '__contains__', '__de

異或-成對陣列丟一值如何快速

1-題目 : 成對出現數字儲存在磁碟檔案中,但成對的數字不一定是相鄰的,如2,5,3, 4,7,3, 4,2,5...,由於意外有一個數字丟失了,如何儘快的找到是哪個數字丟失了? 2-思路 : 由於有一個數字丟失了,那必定有一個數只出現一次而且其它數字都出現了兩次。 異或的特性 :

快速陣列中前k小的元素

方法一:利用快排的思想,迴圈找到第k個位置安放正確的元素,此時k的左邊是小於k位置元素的元素,右邊是大於k位置元素的元素,即前k個元素就是問題答案。時間複雜度O(n)。 int Partition(vector<int> &res,int s,int e) { int

程式設計師面試題:快速一個數組中的兩個數字,讓這兩個數字之和等於一個給定的值

能否快速找出一個數組中的兩個數字,讓這兩個數字之和等於一個給定的值,為了簡化起見,我們假設這個陣列中肯定存在至少一組符合要求的解。 假如有如下的兩個陣列,如圖所示: 5,6,1,4,7,9,8 給定Sum= 10 1,5,6,7,8,9 給定Sum=

快速陣列中出現次數超過一半的數字

“只要不是特別大的記憶體開銷,時間複雜度比較重要。因為改進時間複雜度對演算法的要求更高。” ——吳斌(NVidia,Graphics Architect) 同樣是查詢,如果是順序查詢需要O(n)的時間;如果輸入的是排序的陣列則只需要O(logn)的時間;如果事先已經構造好了

在連續數字序列中快速連續數字之和等於指定值的子序列

這是我視訊面試時做過的一道PHP題目,題目其實並不複雜,是一道常見筆試題的變種。自己年紀大了,好久沒做過筆試題,有點生疏。當時反應變慢了,寫了個愚蠢的答案,這裡總結一下,活動活動自己的腦子,同時給出自己更好的答案,大家可以一起來討論,發表自己的看法。總結總是好的

給定一個字串,所有不重複的排列組合

給一個字串,比如ABC, 把所有的排列,即:ABC, ACB, BAC, BCA, CAB, CBC 都找出來。  解題思路:  對於一個n 位的字串來講,它是n-1位字串的排列 加上 沒有在 n -1 位字串裡 那個字元 的排列。   比如:  對於字串ABC來講,它所有

javascript 幾句話快速字串內指定字元的下標。

今天在和朋友討論如何快速找出字串內指定字元的下標 於是就出現了下面的寫法:  寫法1 var str ="this is javascript" var resault ={index:"",count:0}; while ( true ){ var index =

C語言小程式:100以內素數

C語言 #include<stdio.h> int main() {  int i = 0;int j = 0;int t = 1;for(i = 2;i <= 100;i++){f

2018百度運維崗秋招面試題:36匹馬6跑道快速前三名

36匹馬賽跑,跑道同時只能容許6匹馬。問最少跑多少次可以找出前三名 這道題是在2018年秋招百度面試官給我的問題,我投的是運維研發,要求是程式設計實現,很顯然沒有計時器不然還有啥問的,發部落格也希望有大佬給出合適的解答互相探討學習一下。 這只是我面試完了之後結合

快速網站中可能存在的XSS漏洞實踐(一)

一、背景 筆者最近在慕課錄製了一套XSS跨站漏洞 加強Web安全視訊教程,課程當中有講到XSS的挖掘方式,所以在錄製課程之前需要做大量實踐案例,最近視訊已經錄製完成,準備將這些XSS漏洞的挖掘過程記錄下來,方便自己也方便他人。 在本篇文章當中會一permeate生態測試

[Struts 2] 如何快速所訪問頁面的真實路徑(轉向哪個.jsp檔案)?

問題 一個遺留的Java EE專案,使用Struts 2框架。專案檔案數量眾多,且架構略有點混亂。 現需要對專案中的部分JSP頁面進行修改。問題在於:點選某個連結後,瀏覽器位址列只顯示“包名”和action的名稱,例如:/StrutsDemo/math/toInput.d

JVM快速耗記憶體大物件

問題 當我們的java應用執行時,突然出現記憶體佔用暴增,說明系統中存在長期佔用的物件無法回收,或者出現巨大的物件如何快速定位產生