素數求解(100 200)

2021-08-14 12:24:42 字數 1425 閱讀 9416

素數又稱質數,有無限個。乙個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。

方法1:設100~200間的這個數是i,用i去分別除以2~(i-1)間的每乙個數。

#include#includeint main()//定義型別,整型

if (j == i)//如果不被整除,則輸出i

printf("%d\ ", i);//列印結果用空格或者\n隔開,以免混淆看不清最終結果

}printf("\n");//將所有是素數的數列印出來

system("pause");

return 0;

}

運用這種方法程式設計,**過於繁瑣,系統執行很慢,所以需對其進行優化

方法2:因為i不可能整除比i/2更大的數,所以我們可以設定第3個變數t,用來儲存i/2的值。

#include#includeint main()

if (j>t)//如果不能被整除,則按大從小到大的順序輸出

printf("%d\n", i);

}printf("\n");//列印所有素數

system("pause");

return 0;

}

方法3:相比於i/2,用t來儲存i的平方根會更優化。這種演算法需要引入新的頭函式math.h,和新的函式sqrt()開方函式。

#include#include#includeint main()

if (j>t)//如果不能被整除,則按大從小到大的順序輸出

printf("%d\n", i);

}printf("\n");//列印所有素數

system("pause");

return 0;

}到這一步我們只是優化了內迴圈過程,我們還可以對外迴圈進行優化。

方法4:我們都知道100~200之間的偶數不可能是素數,因此我們可以人為的令i初始化為101,並每次迴圈時令其+2。

#include#include#includeint main()

if (j>t)//如果不能被整除,則按大從小到大的順序輸出

printf("%d\n", i);

}printf("\n");//列印所有素數

system("pause");

return 0;

}

將減少很多運算,提高運算效率

這四種方法都可求出100——200的素數。

輸出100 200之間的素數

如果要輸出乙個素數,首先要判 斷它是不是素數。大家都知道素數是只能被1和它本身除盡的數,1既不是素數也不是合數,2是最小的素數同時也是唯一乙個是偶數的素數,所以要判斷乙個數是不是素數,我想到了三種方法 假設這個數為a 法一 讓a依次和2到a 1相除,如果a不能被2到a 1之間的任何乙個整數整除,則a...

求100 200之間的素數

這個題比較簡單,這裡給出兩種寫法 1.includeint main if i num 2 return 0 2.includeint main if flag 1 return 0 這兩種寫法其實解題思想一致,只是判斷方法不同 從 for i 2 i num 2 i 我們可以看出,我們只是模了2 ...

輸出100 200之間的素數。

輸出100 200之間的素數 對於素數n 只能被1和本身整除,不能被2 n 1之間的數整除的數 分析 運用模運算 n i 0 來判斷整數n是否能被i整除,來判斷n是否為素數。include includeint main if i j 因為對於素數來說,除一之外,另乙個約數就是他本身,所以當i和j相...