求n以內的質數(質數的定義:在大於1的自然數中,除了1和它本身意外,無法被其他自然數整除的數)
思路: 1.(質數篩選定理)n不能夠被不大於根號n的任何質數整除,則n是一個質數
2.除了2的偶數都不是質數
程式碼如下:
/** * 求n內的質數 * @param int $n * @return array */ function get_prime($n) { $prime = array(2);//2為質數 for ($i = 3; $i <= $n; $i += 2) {//偶數不是質數,步長可以加大 $sqrt = intval(sqrt($i));//求根號n for ($j = 3; $j <= $sqrt; $j += 2) {//i是奇數,當然不能被偶數整除,步長也可以加大。 if ($i % $j == 0) { break; } } if ($j > $sqrt) { array_push($prime, $i); } } return $prime; } print_r(getPrime(1000));
相關推薦
求n以內的質數(質數的定義:在大於1的自然數中,除了1和它本身意外,無法被其他自然數整除的數)
思路: 1.(質數篩選定理)n不能夠被不大於根號n的任何質數整除,則n是一個質數2.除了2的偶數都不是質數程式碼如下: /** * 求n內的質數 * @param int $n * @return array */ function get_prime($n) { $prime =
演算法-----求n以內素數(質數)
求n以內素數(質數)。 java版 這道題看到一眼就能想到一個for迴圈,對每個數取餘,如果==0,說明能除斷,就不是素數(質數)。 1、如果用上面的方法去做,當n小的時候,沒什麼,當n資料大的時候,效率就是一個問題,做了很多無用判斷。 改進: 1、所有的偶數都不是
python用遞迴篩選法求N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List,然後從第0位開始,如果後面的能被這個數整除,則從陣
java用遞迴篩選法求N以內的孿生質數(孿生素數)--附氣泡排序和插入排序練習
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>,然後從第0位開始,如
java用遞迴篩選法求N以內的孿生質數(孿生素數)
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,排名前幾的都是用for迴圈來做的,感覺略微麻煩了一些,在比較一些還是覺得用遞迴篩選法來解決這個問題。 新建List<Integer>
python用遞迴篩選法求N以內的孿生質數(孿生素數)
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,
C++求N以內所有的質數
#include <cmath> using namespace std; bool prime(int x) { int y; for(y=2;y<=sqrt(x);y++) if (x%y==0) return false;
Java求n以內的所有質數
質數(prime number)又稱素數,有無限個。一個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。 方法1:根據質數的定義求解; 方法2:對方法1作進一步優化,僅需判斷到該數的平方根; 方法3:
對於大於 11 的數,如果除了 11 和它本身,它不能再被其它正整數整除,那麼我們說它是一個質數。
對於大於 1 的數,如果除了 1 和它本身,它不能再被其它正整數整除,那麼我們說它是一個質數。曉萌想判斷一個數是不是質數,希望找你寫個程式,幫助她進行判斷。 輸入格式 輸入包括一行,為一個整數 N(1<N≤1000),正是曉萌給出你讓你判斷的數字。 輸出格式 輸出包
groovy使用stream語法遞迴篩選法求N以內的質數(素數)--附氣泡排序和插入排序練習
本人最近讀完一本書《質數的孤獨》,裡面講到孿生質數,就想查一下孿生質數的分佈情況。其中主要用到了計算質數(素數)的方法,搜了一下,
C++ 筆試題簡單練習----求N 以內質數 和 計算多少對質數等於N
1、關於質數的操作 * 素數(質數):只能被1和自身整除的數* 若一個數N為合數,則存在a,b,使得N=a*b,且a,b中至少有一個數小於sqrt(N) ,因為N = 2^( sqrt(N) );判
篩法求N以內所有質數
題目:打印出給定數N以內的所有質數 解答: 使用篩法求N以內的所有質數 注意: 使用bitmap可以減少使用的空間,降低空間複雜度 程式碼: #include <iostream> #include <string.h> using namesp
求數字N以內最大質數
public class Prime { public static void main(String[] args) { for (int i =N; i >2; i--) { if (isP
埃氏篩法(求n以內有多少個素數)
cin algorithm memset fin lse mod pre 判斷 end 題目大意:給定整數n,請問n以內有多少個素數 思路:想必要判斷一個數是否是素數,大家都會了,並且可以在O(根號n)的復雜度求出答案,那麽求n以內的素數呢,那樣求就顯得有點復雜了,下面看一
PTA-求n以內最大的k個素數以及它們的和(C語言)
輸入樣例1: 1000 10 輸出樣例1: 997+991+983+977+971+967+953+947+941+937=9664 輸入樣例2: 12 6 輸出樣例2: 11+7+5+3+2=28 #include <stdio.h> //判斷素數 int prime(i
7-51 求n以內最大的k個素數以及它們的和 (20 分)
7-51 求n以內最大的k個素數以及它們的和 (20 分) 本題要求計算並輸出不超過n的最大的k個素數以及它們的和。 輸入格式: 輸入在一行中給出n(10≤n≤10000)和k(1≤k≤10)的值。 輸出格式: 在一行中按下列格式輸出: 素數1+素數2+…+素數k
輸出n以內的所有質數
1.基本方法:對於n以內的每個數,一直除到sqrt(n),仍遇不到能整除的,則是質數: void printPrime(int n){if (n < 2)return;for (int i = 2; i <= n; i++){int j = 2;for (; j
#判讀質數(一個隨機數):(只能被1和它本身整除的數)
#判讀質數(一個隨機數):(只能被1和它本身整除的數) num=int(input(“隨機輸入一個數”)) c=2 #除數的初始值 while c if num%c==0: break c+=1 if num==c: #能被本身整除的數是質數 print("是
PTA 7-14 求n以內最大的k個素數以及它們的和(20 分)
本題要求計算並輸出不超過n的最大的k個素數以及它們的和。 輸入格式: 輸入在一行中給出n(10≤n≤10000)和k(1≤k≤10)的值。 輸出格式: 在一行中按下列格式輸出: 素數1+素數2+…+素數k=總和值 其中素數按遞減順序輸出。若n以內不夠k個素數,則按實際個數輸出。 輸入樣例1: 1000
7-51 求n以內最大的k個素數以及它們的和(20 分)
題目: 本題要求計算並輸出不超過n的最大的k個素數以及它們的和。 輸入格式: 輸入在一行中給出n(10≤n≤10000)和k(1≤k≤10)的值。 輸出格式: 在一行中按下列格式輸出: 素數1+素數2+…+素數k=總和值 其中素數按遞減順序輸出