tft每日頭條

 > 生活

 > 用c語言編程判斷是否為素數

用c語言編程判斷是否為素數

生活 更新时间:2025-02-15 14:54:54

如何判斷素數?

用c語言編程判斷是否為素數(如何判斷一個數字是否為素數)1

題目要求:輸出100-200的素數

首先我們要知道什麼是素數(質數),以防有人忘記(比如剛學開始學c的我就忘記了)

素數(質數)隻能被1和它自己整除

7隻能被1和7整除,是素數

9能被3整除,不是素數

方法1—試除法

#include<stdio.h> int main() { int i=0; int count=0; for(i=100;i<=200;i ) { int j=0; for(j=2;j<i;j ) { if(i%j==0)//i可以整除j,i不是素數 { break; } } if(j==i)//i隻能整除它自己,是素數 { count ; printf("%d ",i); } } printf("\ncount=%d\n",count);//計算100-200之間有幾個素數 return 0; }

用c語言編程判斷是否為素數(如何判斷一個數字是否為素數)2

這個代碼比較死,隻是輸出了100到200之間的素數,完成了題目的要求

我們可以把它改造成輸入一個數字,判斷是否是素數的形式

代碼改造1-1

用戶輸入一個數字

代碼判斷是否為素數

是,輸出“是素數”以及用戶輸入的值

不是,輸出“不是素數”

#include<stdio.h> int main() { int i=0; int j=0; scanf("%d",&i); for(j=2;j<i;j ) { if(i%j==0) { printf("不是素數\n"); break; } } if(j==i) { printf("是素數,i=%d\n",i); } }

結果如下:

用c語言編程判斷是否為素數(如何判斷一個數字是否為素數)3

上面的這串代碼能很好地完成我們的需求,但它還有優化的空間

方法2—開平方法

方法1中的for循環為j<i

如果數字很大的話,要循環非常多次才能出現j==i的情況

這就拖慢了我們程序運行的速度

這裡我們引入一個概念

若i=a*b

a和b中至少有一個數字 <= 開平方i

如16=2x8=4x4

其中2<4

這樣就能得到一個結論:

在根号i之前一定有一個數字n是非素數的除數

如果找不到這個數字n,說明該數字為質數

利用開平方法,我們可以将需要查找的數字範圍縮小很多

以下是用該方法完成開頭題目要求的代碼示例:

#include<stdio.h> int main() { int i=0; for(i=101;i<=200;i =2) { int j=0; for(j=2;j<=sqrt(i);j ) { if(i%j==0) { break; } } if(j>sqrt(i)) { printf("%d ",i); } } return 0; }

用c語言編程判斷是否為素數(如何判斷一個數字是否為素數)4

将這個代碼改造成1-1那種形式也不難,自己試試吧!

感謝你看到最後!希望能夠幫到你~

-----------------------------------

為了幫助大家,輕松,高效學習C語言/C ,給大家分享我收集的資源,從最零基礎開始的,幫助大家在學習C語言的道路上披荊斬棘!

編程學習書籍分享:

用c語言編程判斷是否為素數(如何判斷一個數字是否為素數)5

編程學習視頻分享:

用c語言編程判斷是否為素數(如何判斷一個數字是否為素數)6

用c語言編程判斷是否為素數(如何判斷一個數字是否為素數)7

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)最重要的是你可以在群裡面交流提問編程問題哦!

對于C/C 感興趣可以關注小編在後台私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved