C語言 | 判斷是否素數

2021-02-14 C語言入門到精通

「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」

這道理放在C語言學習上也一併受用。在編程方面有著天賦異稟的人畢竟是少數,我們大多數人想要從C語言小白進階到高手,需要經歷的是日積月累的學習。那麼如何學習呢?當然是每天都練習一道C語言題目!!

作者

閆小林

白天搬磚,晚上做夢。我有故事,你有酒麼?

例16:C語言實現輸入一個大於3的整數n,判斷他是否為素數(質數)。解題思路:本題採用的算法是,讓n被i除,如果number能被2~(number-1)之中的任何一個整數整除,則表示number肯定不是素數,不必再繼續被後面的整數除,因此,可以提前結束循環。

#include<stdio.h>//頭文件
int main()//主函數
{
  int number,i;//定義變量
  printf("請隨機輸入一個數:");//提示語句
  scanf("%d",&number);//鍵盤輸入需要判斷的數
  for(i=2;i<=number-1;i++)//循環從2開始,到這個數的掐前一個數為止
  {
    if(number%i==0)//如果取餘結果為0
    break;
  }
  if(i<number)
  {
    printf("%d不是素數",number);
  }
  else
  {
    printf("%d是素數",number);
  }
  return 0; //函數返回值為0
}

請隨機輸入一個數:56
56不是素數
--
Process exited after 4.465 seconds with return value 0
請按任意鍵繼續. . .

讀者需要知道什麼是素數,素數一般指質數,是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。此題的關鍵是看結束循環時i的值是否小於number,如果number能被2~(number-1)之間的一個整數整除,則必然是由break語句導致循環提前結束,即i並未達到number的值時,循環就終止了。

相關焦點

  • 你不知道的素數判斷方法
    素數判斷?這不是小學學的嗎?您先別著急,不管您是小學,初中還是高中,從事什麼職業,我相信,堅持看完你一定有收穫![C語言必知必會]素數的判斷我們要判斷素數,首先要知道素數的定義。素數:質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。知道了素數的定義,那麼我們應該想一下,如何去判斷一個數是否為素數?
  • Python如何判斷一個正整數是否是素數?
    如2、3、5、7、11都是素數,因為找不到除了1和其本身之外的約數;而4、6、8都是合數,因為4可以整除2,6可以整除2和3,8可以整除2和4。而一個數的約數必然是不超過該數的,加上素數必需是只有1和本身是其約數的條件。於是,我們可以通過枚舉小於該數,並且大於1的整數,來判斷該數是否是素數。
  • C語言編程:驗證哥德巴赫猜想
    a = b + c(其中a是大於等於6的整數,b和c是素數)這個問題就等價於:對於一個給定的大於等於4的偶數a,怎麼找到素數b和c呢?可以用循環的方法,把b的值從3循環到a-3,那麼對應的c的值就是a-3到3。然後我們分別對每一組的b和c值進行是否是素數的判斷。
  • C++語言素數原理
    /* 學習內容:輸入一個32位的整數,列印出到該數範圍內的所有素數。 只能被1和自身整除的數為素數 語言:C++*/#include <iostream> //C語言中的stdio.h#include <cmath> //C語言中的math.h#include <climits> //C語言中的limits.h#include
  • 判斷素數函數
    描述寫一個函數isPrime(n)用於判斷一個數字n是不是素數,用戶輸入一個正整數,在一行內輸出不大於該數的所有素數,各數後面用一個空格分隔
  • C語言編程求解:1到1000之間所有的素數
    算法思考:判斷一個數是不是素數,只需要判斷它是不能只能被1和自身整除。那怎麼判斷一個數不能被除1和自身之外的其他數整除呢?想法是寫一個循環,循環裡依次除以從2到這個數減1的所有的整數,如果都不能整除,說明這個數是素數;如果出現一個能整除的數,那麼這個數不是素數。(其實,判斷素數還可以優化,循環裡依次除以從2到這個數平方根的所有的整數就可以了。因為假設一個數n,除以2~根號n的整數,都不能整除,那麼除以根號n~n-1的整數也不能整數。
  • C語言求給定範圍內的所有素數代碼及解析
    問題分析判定一個整數m是否為素數的關鍵就是要判定整數m能否被除1和它自身以外的任何其他整數所整除,若都不能整除,則m即為素數。本題求的是給定範圍start〜end之間的所有素數,考慮到程序的通用性,需要從鍵盤上輸入start和end值,例如輸入start=1,end=1000,則所編寫的程序應能夠列印出1〜1000之間的所有素數。算法設計由問題分析可知,該問題考慮用雙層循環結構實現。
  • C語言 | 求100~200的素數​
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」這道理放在C語言學習上也一併受用
  • 如何判斷一個數是素數呢?
    素數這個詞,我們經常在數學題中看到,判斷一個數是否是素數,首先,我們先來了解一下素數的概念,素數一般指質數。質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。了解概念之後,我們來看一道簡單的例題:判斷101到200之間的素數根據題目,我們通過編程的思想進行分析,判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除, 則表明此數不是素數,反之是素數。
  • 素數的判斷
    return true; for (var i = 2;i <= n-1;i++) { if(num % i ==0){ return false; } } return true; }方法2:時間複雜度O(logN)上述判斷方法
  • 素數判斷算法
    isPrime(num){if(num ==2 || num==3)return true;for (var i = 2;i <= n-1;i++) {if(num % i ==0){return false;}}return true;}方法2:上述判斷方法
  • 在學C語言的人,怎能不了解這些經典算法問題?
    ,並輸出所有素數及素數的個數。程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。\n",c); } 四、輸出9*9乘法口訣。
  • 你所不知道的C語言經典九大編程實例思想
    獲取更多精彩文章請關注云主宰蒼穹引言:對於學習計算機程式語言而言,一門程式語言的經典思想是十分重要的。這是一門計算機程式語言的特色優點,是其解決問題的經典思維。你所了解的C語言,有哪些經典的編程實例思想,歡迎下方留言交流!
  • C語言基礎知識學習經典入門
    4 C語言方法調用... 25 C語言宏定義 – 在編譯階段... 26 C語言宏方法定義 – 在編譯階段,無類型... 37 C語言條件判斷... 38 C語言循環... 49 C語言結構體 – 存儲數據的集合 – 結構體的賦值,直接是內存的拷貝... 510 C語言結構體指針 - 同一塊內存... 5
  • C語言編程實例講解
    >C語言歸併排序算法C語言二分查找算法,折半查找算法C語言分塊查找算法,索引順序查找算法C語言求n的階乘(n!)C語言判斷三角形的類型C語言水仙花數,阿姆斯特朗數C語言最大公約數和最小公倍數C語言求自然底數e,求自然對數的底eC語言小寫轉大寫,小寫字母轉換成大寫字母
  • C語言試題及答案
    新思路 2020年秋季大一招新機試試題<C語言>一、選擇題(每題 5 分,共 20 分)1.以下說法正確的是( )A._9cpp 是正確的變量名 B. k=++n 與 k=n,n=n+1 完全等價 C.程序在執行了 int a=1,*b=&a,**c=&
  • 求素數——枚舉、篩法、六素數法
    判斷素數在算法問題中經常遇到,這裡小結幾種求素數的常用方法。
  • 孿生素數猜想——是否存在無窮多個素數p使得p + 2是素數?
    孿生素數猜想指出:孿生素數有無窮多個孿生素數是一個與另一個素數相差2的素數。一組相差2的兩個素數稱為孿生素數對。起源雖然歐幾裡得公元前300年證明有無窮多個素數,是否有無限多的孿生素數直到1849年才被證明,法國數學家波林那克(1826 - 1863)猜想每一個自然數k,存在無窮多的素數p,使得p + 2k也是素數。孿生素數猜想是k=1的特殊情況。
  • 整數範圍內的素數表
    其中,短素數.dat 文件保存的是短整數範圍(2位元組)內的所有素數,一共3512個素數,最小素數為2,最大素數為32749。數據文件不含任何文件頭和文件附加尾,直接就是所有數據,C語言可以用short int數據類型讀取,Pascal可以用integer數據類型讀取,易語言用短整數數據類型讀取,每兩個字節保存一個數。
  • C語言|判斷某年是否只閏年
    「要成為絕世高手,並非一朝一夕,除非是天生武學奇才,但是這種人…萬中無一」 ——包租婆 這道理放在C語言學習上也一併受用。在編程方面有著天賦異稟的人畢竟是少數,我們大多數人想要從C語言小白進階到高手,需要經歷的是日積月累的學習。