- 熱門文章
- 隨機文章
C語言求素數(shù)代碼
for(c=2;c<=b;c++) if(a%c==0)break; -- 這是一句。
c從2 起,2,3,4,5。。到b, 依次去除 a,
a%c==0 -- 如果 (除法 求余數(shù))余數(shù)是 0 ,就是 除盡了,它不是素數(shù)
break; --一旦 除盡了 就 break, 也就是 結(jié)束 循環(huán)。這時的 c 循環(huán)到多少就等于多少,不會大于 b.
如果 (除法 求余數(shù))余數(shù)是始終 不是 0, 直到 b 也沒除盡。循環(huán)結(jié)束。
出循環(huán)體時,由于 c++, c 增 1。c 最大值 不超過 b+1.
接下來 if(c>=b+1) 就是判斷上面循環(huán) 狀態(tài),到底 循環(huán)到 幾。
滿足c>=b+1 是 素數(shù), 否則 不是。
顯然 c >= b+1
以下是一個簡單的C語言代碼示例,用于求出10到100之間的所有素數(shù) [?](https://cloud.tencent.com/developer/article/1751025) [?](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711) [?](https://blog.csdn.net/BJYX_L/article/details/132146944) [?](https://blog.csdn.net/weixin_73383175/article/details/128228041)。
```c
#include<stdio.h>
int main()
{
int i, j, count = 0;
for(i = 10; i <= 100; i++)
{
for(j = 2; j <= sqrt(i); j++)
{
if(i % j == 0)
break;
}
if(j > sqrt(i))
{
count++;
printf("%d\t", i);
if(count % 10 == 0)
printf("\n");
}
}
printf("共有%d個素數(shù)\n", count);
return 0;
}
```
這段代碼的主要思路是:
1. 使用外層for循環(huán)遍歷10到100之間的所有整數(shù)。
2. 在內(nèi)層for循環(huán)中,從2開始,到整數(shù)i的平方根結(jié)束。這是因為一個數(shù)的因子最多不會超過它的平方根,如果在這個范圍內(nèi)沒有找到能整除的數(shù),那么這個數(shù)就是素數(shù) [?](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711) [?](https://blog.csdn.net/BJYX_L/article/details/132146944)。
3. 如果在內(nèi)層循環(huán)中找到了一個能整除i的數(shù),那么就跳出內(nèi)層循環(huán)。
4. 如果在外層循環(huán)結(jié)束后,內(nèi)層循環(huán)都沒有跳出,那么說明i是素數(shù),將其加入素數(shù)的計數(shù)中,并打印出來。
5. 每打印出10個素數(shù),就換一行,以便于查看結(jié)果。
這段代碼的優(yōu)化之處在于,在內(nèi)層循環(huán)中,只需要檢查到整數(shù)i的平方根,而不是全部的數(shù),這大大減少了計算量 [?](https://blog.csdn.net/BJYX_L/article/details/132146944#comments_28044711) [?](https://blog.csdn.net/BJYX_L/article/details/132146944)。
以下是一個用C語言求素數(shù)的簡單代碼示例:
#include <stdio.h>
int isPrime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
def main() {
double n, i;
cin >> n;
srand(); // 隨機生成一個正整數(shù)種子,保證每次運行程序都是隨機的
i = isPrime(17); // 當輸入為17時,返回1,因為17是素數(shù)
cout << "素數(shù)個數(shù):" << i << endl;
sleep(1); // 暫停一下,控制輸出速度
cin >> n; // 清空輸入緩沖區(qū),重新輸入下一個數(shù)字
sleep(1); // 清空緩存區(qū),控制輸出速度
cout << "素數(shù)個數(shù):" << i << endl;
sleep(1); // 清空緩存區(qū),控制輸出速度
cin >> n; // 清空緩存區(qū),重新輸入下一個數(shù)字
sleep(1); // 清空緩存區(qū),控制輸出速度
cout << "素數(shù)個數(shù):" << i << endl;
sleep(1); // 清空緩存區(qū)
素數(shù)指的是大于 1 的自然數(shù),除了 1 和自身外,沒有其他正因數(shù)的數(shù)。
以下是一段用 C 語言編寫的求素數(shù)的代碼:
#include <stdio.h>
// 判斷一個數(shù)是否為素數(shù)的函數(shù)
int is_prime(int n) {
// 如果數(shù)字小于等于 1,則不是素數(shù)
if (n <= 1) {
return 0;
}
// 從 2 開始循環(huán)到 sqrt(n) + 1
for (int i = 2; i <= sqrt(n) + 1; i++) {
// 如果 n 能被 i 整除,則不是素數(shù)
if (n % i == 0) {
return 0;
}
}
// 如果循環(huán)結(jié)束都沒有被整除,則是素數(shù)
return 1;
}
int main() {
int n;
printf("請輸入一個正整數(shù):");
scanf("%d", &n);
// 調(diào)用 is_prime 函數(shù)判斷輸入的數(shù)是否為素數(shù)
if (is_prime(n)) {
printf("%d 是一個素數(shù)。\n", n);
} else {
printf("%d 不是一個素數(shù)。\n", n);
}
return 0;
}
在這個程序中,我們首先定義了一個名為 is_prime 的函數(shù),用于判斷一個數(shù)是否為素數(shù)。該函數(shù)使用一個循環(huán)來檢查從 2 到該數(shù)平方根加 1 的所有數(shù),如果該數(shù)能被這些數(shù)整除,則它不是素數(shù),函數(shù)返回 0;否則,它是素數(shù),函數(shù)返回 1。
在 main 函數(shù)中,我們首先提示用戶輸入一個正整數(shù),然后調(diào)用 is_prime 函數(shù)來判斷這個數(shù)是否為素數(shù)。根據(jù) is_prime 函數(shù)的返回值,我們輸出相應的結(jié)果。
你可以將代碼復制到 C 語言編譯器中進行編譯和運行,然后根據(jù)提示輸入一個正整數(shù),程序?qū)⑤敵鲈摂?shù)是否為素數(shù)。
其他文章
- 張國榮感情語錄
- 烏當中學怎么樣
- 黃家駒的AMANI是什么意思
- yu是聲母韻母還是整體認讀
- 什么是農(nóng)業(yè)示范園
- 嘉睿的意思 佳睿的意思 晟睿的意思
- 雄姿英發(fā)是什么意思
- 怎么仿寫詩歌
- 短時評怎么寫
- 廁所里的搞笑詩
- 陌上初熏 是什么意思
- 什么叫戲歌
- 成語成語什么化雨
- 青島大學膠州校區(qū)介紹
- or的中文是什么意思
- 關(guān)于童年的詩
- Hanson或Hansen做英文名怎樣
- 引吭高歌讀音
- 餃子的來歷和由來
- 相的組詞有哪些詞語
- 烏衣巷的解釋
- 用 勤 組成的詞語有哪些
- 阜陽市城郊中學怎么樣
- 去海邊穿什么鞋兒童
- 十九繁體
- 硫酸霧化學式
- 你們知道味字可以組什么詞嗎
- 美人魚怎么畫
- 艾子教孫 文言文翻譯
- 黑龍江財經(jīng)大學怎么樣