篩選法求N範圍內的所有素數
先把N個自然數按次序排列起來。1不是質數也不是合數,所以排除1,從2開始。2是質數留下來,把後面能被2整除的數全部刪除;接著留下來的第二個素數是3,把後面能被3整除的數刪除;依次後移,直到N。我用操作最簡單的vector容器實現,看程式碼:
#include <iostream> #include <vector> using namespace std; int main(){ int n; cin>>n; if(n<=1){ cout<<"error!"<<endl; //如果n<=1,則無意義,返回0; return 0; } vector<int>vec; for(int i = 2;i<=n;i++){ vec.push_back(i); //從2開始,依次放入容器 } int i = 0; while(i<vec.size()){ for(int j = i+1;j<vec.size();j++){ if(vec[j] % vec[i] == 0){ vec.erase(vec.begin()+j); //如果能被整除,則直接刪除掉 } } i++; } for(int i=0;i<vec.size();i++){ cout<<vec[i]<<' '; } return 0; }
相關推薦
篩選法求N範圍內的所有素數
先把N個自然數按次序排列起來。1不是質數也不是合數,所以排除1,從2開始。2是質數留下來,把後面能被2整除的數全部刪除;接著留下來的第二個素數是3,把後面能被3整除的數刪除;依次後移,直到N。我用操作最簡單的vector容器實現,看程式碼: #include <io
python用遞迴篩選法求N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List,然後從第0位開始,如果後面的能被這個數整除,則從陣
java用遞迴篩選法求N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>,然後從第0位開始,如
java用遞迴篩選法求N以內的孿生質數(孿生素數)
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>
groovy使用stream語法遞迴篩選法求N以內的質數(素數)--附氣泡排序和插入排序練習
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,
python用遞迴篩選法求N以內的孿生質數(孿生素數)
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,
問題:求n以內的所有素數。要求給出自然語言描述的演算法,並且實現演算法。事先分析演算法的時間複雜度和空間複雜度。/*如果錯誤或相關改進的歡迎提出,謝謝!*/
/*2018.10.20上傳,該貼還有部分需要完善,比如2輸不出,還有許多可以優化的地方,未完,待更~~*/ #include <stdio.h> #include <math.h> #include <time.h> void pr
Eratosthenes篩選法求小於N的所有素數個數
求出1~N範圍中所有的素數,在leetcode中做過這個題目,我想從對每個1~N進行一次遍歷,每個數判斷一次是否是素數。 判斷一個數是否是素數的複雜度本身也是挺高的,再進行一次迭代,在leetcode中的結果是超時: class Solution { p
Problem D: C/C++經典程式訓練7---求某個範圍內的所有素數
Problem D: C/C++經典程式訓練7---求某個範圍內的所有素數 Time Limit: 1 Sec Memory Limit: 64 MB Description 求小於n的所有素數,按照每行10個顯示出來。 Input 輸入整數n
C語言求給定範圍內的所有素數程式碼及解析
問題描述 求給定範圍start〜end之間的所有素數。 問題分析 判定一個整數m是否為素數的關鍵就是要判定整數m能否被除1和它自身以外的任何其他整數所整除,若都不能整除,則m即為素數。 本題求的是給定範圍start〜end之間的所有素數,考慮到程式的通用性,需要從鍵盤上輸入start和end值,例如輸
程式基本演算法習題解析 使用篩選法求出1~100之內的所有素數
思路: 第一個素數是2,把後面是2的整數倍的數全部篩去,篩去的數置0;從第一個素數2向後找出最小的未被篩去的數3,把它後面是3的整數倍的數全部篩去並置0;重複上述過程,直到新找到的素數大於1
C/C++練習7---求某個範圍內的所有素數 (sdut oj)
C/C++練習7---求某個範圍內的所有素數 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 求小於n的所有素
C語言求給定範圍內的所有素數
問題描述 求給定範圍start〜end之間的所有素數。 問題分析 判定一個整數m是否為素數的關鍵就是要判定整數m能否被除1和它自身以外的任何其他整數所整除,若都不能整除,則m即為素數。本題求的是給定範圍start〜end之間的所有素數,考慮到程式的通用性,需要從鍵盤上輸
1137C/C++經典程式訓練7---求某個範圍內的所有素數
題目描述 求小於n的所有素數,按照每行10個顯示出來。 輸入 輸入整數n(n<10000)。 輸出 每行10個依次輸出n以內的所有素數。如果一行有10個素數,每個素數後面都有一個空格。 示例輸入 100 示例輸出 2 3 5 7 11 13 1
SDUT-1137 C/C++練習7---求某個範圍內的所有素數
Code #include <stdio.h> #include <math.h> int main() { int i,j,n,count; scan
C/C++練習7---求某個範圍內的所有素數
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 #include<stdio.h> #include<math.h> int main() { int i,n,m,count=0; sc
篩選法求素數
return include main 技術 ret printf int images ima C語言 #include <stdio.h>#include <math.h>int main(){int i,j,a[100],N;scanf("
求指定整數範圍內的素數之和
結束 int else if else 正整數 i++ bre turn exit //求指定整數範圍內的素數之和int getSumResult(int start,int end){ int i,j; int flag=0; int result=0; if(s
【C語言】 利用篩選法求100以內的素數
演算法思路: 原理很簡單,就是當i是質(素)數的時候,i的所有的倍數必然是合數。如果i已經被判斷不是質數了,那麼再找到i後面的質數來把這個質數的倍數篩掉。 程式碼如下: //C語言 篩選法求100以內的素數 //原理很簡單,就是當i是質(素)數的時候,i的所有的倍數必然是合數。如果i已經
JAVA——求出指定範圍內所有的質數
求出指定範圍內所有的質數 1.要求 在視窗輸出指定範圍內所有的質數,並對所有輸出的質數個數進行計數。 2.質數 在所有比1大的整數中,除了1和它本身以外,不再有別的因數,這種整數叫做質數或素數。還可以說成質數只有1和它本身兩個約數。 3.原理 具體做法是:先