C語言中的素數問題為什麼求到根號某數為止

時間 2021-08-11 17:05:24

1樓:逃離

我今天也剛問了一個素數的問題。

例如一個數是m,要求它的素數,設k=sqrt(m),i=2,i<=k ,判定是否(m%i==0),

因為整數都是可以被1和自己本身整除,而素數只能給1和自己本身除。

所以我要找素數都是從2開始一個一個的找,在2

這樣編的意思就是找一個數的最小因子。且這個比if(i==m)程式的速度更快。

2樓:匿名使用者

是否是素數是用比它小的數去除它看能否出盡來判斷的,而如果能出盡的話那麼除數是成對存在的,比如22=2*11,2和11就是一對,而這一對只要判斷一個就可以了,因此這種除數判斷的下界為2,而上界為被除數開根號。

3樓:匿名使用者

舉例說明:

1. 90 = 2 * 3 * 3 * 5 (90的質因式中最大的質因數是5,小於90的平方根)

2. 49 = 7 * 7 (49 的質因式中最大的質因數是7,等於49的平方根)

總之,任意一個數的最大的質因數都小於或等於這個數的平方根。

所以,求素數時求到這個數的平方根即可,這樣可以程式提高程式效率。

4樓:

因為根號某數是可被整除無重複的數最大那個(除了本身以為),被625整除的數最大的也就是25,再大的被整除的因數中另一個肯定是2到25中某個數,因此無需繼續判斷。比如5,和125無需判斷125。

判斷一個數是否是素數,為什麼只要除到根號那個數就夠了 ,求c語言**

5樓:匿名使用者

x=ab

那麼a和b,必然有一個大於√x,一個小於(或者兩個都等於)。

那麼不是隻要判斷到√x就可以麼?

c語言程式設計 求1到20的素數

以下是求1到20的素數的c語言程式 c include int main int i,j,flag printf 1 20的素數有 for i 2 i 20 i flag 0 for j 2 j i 2 j if i j 0 flag 1 break if flag 0 i 1 printf d i...

c語言問題6,c語言問題 為什麼答案是8,6,

1 結構體的成員可以是另一個結構體,這就叫結構體的巢狀。比如 struct segment 下面的bs 213是遞迴,是定義成自己本身的一個結構體,本身的結構體又定義了一個本身的結構體,這樣下去就是個無限遞迴了。可以這樣寫,但實際中是沒有什麼用處的。struct node 2 在c語言中,連結串列中...

超難C語言設計問題,為什麼C語言比較難學?

我暈!你能多給點分嗎?為什麼c語言比較難學?10 不是啦!c語言入門還是比較容易的,很多人都說c語言是高階語言中的低階語言,是應為它可以直接接觸到底層的東西,如直接讀寫記憶體等,也正因此c語言也是一種很靈活的語言。也許難就難在它的靈活性上吧。 我就學不來,為了學c語言我大學報了補習班,但是2次考試都...