您好,登錄后才能下訂單哦!
這篇文章主要介紹“C語言輸入一個數判斷是否為素數的方法有哪些”,在日常操作中,相信很多人在C語言輸入一個數判斷是否為素數的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言輸入一個數判斷是否為素數的方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
需要解決這個問題,首先我們要明白-------->什么是素數?
(質數)素數是指在大于1的自然數中,除了1和它本身以外不再有其他因數的自然數。
舉個例子:4 可以 由2*2=4 和1*4 得到,不符合素數的條件,所以不是素數。
5 只能由1*5 得到,符合素數的條件,所以是素數。
這種方法的思想也是最直接最普遍的,假設這個數是n,我們需要判斷素數,我們就拿這個數和從(2~~n-1)的每個數去和這個數做取余操作,如果有一個數可以使得余數為0,則這個數不是素數,反之則這個數為素數。
好了接下來我們用代碼實現
#include <stdio.h> int main() { int i=0; int j=0; printf("輸入一個數 "); scanf("%d",&j); for(i=2;i<j;i++) { if(j%i==0) { printf("%d 不是素數",j); break; } } if(j==i) { printf("%d 是素數",j); } if(j==1) { printf("%d 不是素數",j); } return 0; }
代碼的具體實現就在上面,可能有的同學對if語句中為什么當j==i時,就輸出是素數。
不要著急,我給大家捋捋思路,我們可以思考一下,如果在(2~~j-1)中的每一個數都沒滿足取余操作后余數為0,那這時我的 i 應該 等于j-1,但我們的 i 由于滿足i<j還會繼續進行++操作,然后我的 i 就等于j ,此時已經不滿足i <j 的條件,我們就會跳出for循環,此時我們就可以認為,當 i==j時,這個數為素數。
我們對第一種方法進行優化,我們通過下述例子分析可知,每個數的因數中,其中一個不會超過本身的1/2,所以我們可以利用這個思想對代碼進行優化。
我們其實并不需要對(2~~n-1)的全部數進行上述操作,我們可以只對(2~~n/2)的全部數進行上面的操作就可以了,這樣可以簡化我們的計算范圍。
舉個例子:4 可以 由2*2=4 和1*4 得到,因數 2,2或1,4,每組其中的一個因數不大于自身(4)的1/2。
好了接下來我們用代碼實現
#include <stdio.h> int main() { int i=0; int j=0; printf("輸入一個數 "); scanf("%d",&j); for(i=2;i<=j/2;i++) { if(j%i==0) { printf("%d 不是素數",j); break; } } if(j==1) { printf("%d 不是素數",j); } if((i>j/2) && (j!=1)) { printf("%d 是素數",j); } return 0; }
我們對第二種方法進行優化,我們通過下述例子分析可知,每個數的因數中,其中一個不會超過本身的開方,這樣我們又縮小了我們的計算范圍,所以我們可以利用這個思想再次對代碼進行優化。
舉個例子:16 可以 由1*16,2*8和4*4,得到,因數1,16和2,8和4,4每組其中的一個因數不大于本身(16)的開方(4)。
好了接下來我們用代碼實現
#include <stdio.h> #include<math.h> int main() { int i=0; int j=0; printf("輸入一個數 "); scanf("%d",&j); for(i=2;i<=sqrt(j);i++) { if(j%i==0) { printf("%d 不是素數",j); break; } } if(j==1) { printf("%d 不是素數",j); } if((i>sqrt(j)) && (j!=1)) { printf("%d 是素數",j); } return 0; }
因為用到了數學中開平方的函數,所以引用了多一個庫,這個不做過多講解,大家自行去了解。
當然判斷素數不知有上述的方法,還可以通過函數進行實現。
具體的代碼思想和第一種方法一樣,不再講解。
好了接下來我們用代碼實現
#include <stdio.h> int judge(int n) { int i=0; for(i=2;i<n;i++) { if(n%i==0) return 0; } if(n==1) { return 0; } return 1; } int main() { int j=0; printf("輸入一個數"); scanf("%d",&j); if(judge(j)==1) printf("%d 是素數",j); else printf("%d 不是素數",j); return 0; }
到此,關于“C語言輸入一個數判斷是否為素數的方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。