C/C++每日一問--判斷素數

2021-01-14 嵌入式龍憨憨
點擊上方「嵌入式龍憨憨」,選擇「置頂/星標公眾號」第一時間查看編程筆記!


特別設置【每日一問】專欄,對專業課--C/C++的複習的學習成果進行實踐檢驗以及知識拓展,裂變自己接觸和學習過的知識及技巧;主要是理論和實踐相結合,以基礎知識為主,實踐操作為輔,保證學習效果,和大家一起回顧知識,共同進步,加油!

特別提示:【每日一問】欄目包括但不限於【今日主題】、【實踐演練】、【知識裂變】等模塊,內容比較基礎,適合新手學習以及熟手進行知識回顧,大神勿噴,請自動繞道,謝謝!


如何判斷一個數是否是素數?

如何判斷一個範圍內的哪些數是素數並具體輸出素數,同時輸出個數?


原理:素數(質數),在一般領域,對正整數n,如果用2到根號下n之間的所有整數去除,均無法整除,則n為素數。

即:素數大於等於2,不能被它本身和1以外的數整除。


開發環境:Win10,VS2015

具體程序如下:


/*@Filename:main.c@author:Bagman@date :2020.07.10@function :本程序主要關於求素數問題。      素數(質數):在一般領域,對正整數n,如果用2到根號下n之間的所有整數去除,      均無法整除,則n為質數。      質數大於等於2,不能被它本身和1以外的數整除*/
#include "stdafx.h"#include <iostream>#include <iomanip>using namespace std;
int main(){ bool primeNumberCheck(int num); int findPrimeNumber(int num1, int num2);
bool select,prime; int number,ftnum,ednum; int prCount = 0;
cout << "單個數據判斷輸入1,多個輸入0" << endl; cin >> select;
if (select) { cout << "請輸入一個數:" << endl; cin >> number; prime = primeNumberCheck(number); if (prime) { cout << number << "是素數" << endl; } else { cout << number << "不是素數" << endl; } } else { cout << "請輸入數的範圍:" << endl; cin >> ftnum >> ednum; cout << "素數分別為:" << endl; prCount = findPrimeNumber(ftnum, ednum); cout << endl << "素數個數:" << prCount << endl; }
system("pause"); return 0;}
/*輸入一個整數,判斷是不是素數*/bool primeNumberCheck(int num){ bool flag = true;// 開始假設是素數 int i,K; K = int(sqrt(num));// 根號下num
for (i = 2; i <= K; i++) { if (num % i == 0) { flag = false; break; } else// 此處可省略 { flag = true; } } return flag;}
/*輸入一個整數範圍,判斷有哪些數是素數並輸出*/int findPrimeNumber(int num1, int num2){ bool flag = true;// 開始假設是素數 int m, K; // m-數,K-根號下num int count = 0; //素數個數
// 判斷m是否是素數,m範圍為num1-num2 for (m = num1; m <= num2; m++) { K = int(sqrt(m));// 根號下num for (int i = 2; i <= K; i++) { if (m % i == 0) { flag = false; break; } else// 此處可省略 { flag = true; } } if (flag) { cout << setw(6) << m; count++; }
if (count % 10 == 0) { cout << endl; } }
return count;}

單個素數的判斷具體執行如下:


多個素數的判斷具體執行如下:


每日一問--運算符:運算符優先級及結合性如下:

優先級

運算符

名稱或含義

使用形式

結合方向

說明

1

[]

數組下標

數組名[整型表達式]

左到右


()

圓括號

(表達式)/函數名(形參表)


.

成員選擇(對象)

對象.成員名


->

成員選擇(指針)

對象指針->成員名


2

-

負號運算符

-算術類型表達式

右到左

單目運算符

(type)

強制類型轉換

(純量數據類型)純量表達式


++

自增運算符

++純量類型可修改左值表達式

單目運算符

--

自減運算符

--純量類型可修改左值表達式

單目運算符

*

取值運算符

*指針類型表達式

單目運算符

&

取地址運算符

&表達式

單目運算符

!

邏輯非運算符

!純量類型表達式

單目運算符

~

按位取反運算符

~整型表達式

單目運算符

sizeof

長度運算符

sizeof 表達式

sizeof(類型)


3

/

表達式/表達式

左到右

雙目運算符

*

表達式*表達式

雙目運算符

%

餘數(取模)

整型表達式%整型表達式

雙目運算符

4

+

表達式+表達式

左到右

雙目運算符

-

表達式-表達式

雙目運算符

5

<<

左移

整型表達式<<整型表達式

左到右

雙目運算符

>>

右移

整型表達式>>整型表達式

雙目運算符

6

>

大於

表達式>表達式

左到右

雙目運算符

>=

大於等於

表達式>=表達式

雙目運算符

<

小於

表達式<表達式

雙目運算符

<=

小於等於

表達式<=表達式

雙目運算符

7

==

等於

表達式==表達式

左到右

雙目運算符

!=

不等於

表達式!= 表達式

雙目運算符

8

&

按位與

整型表達式&整型表達式

左到右

雙目運算符

9

^

按位異或

整型表達式^整型表達式

左到右

雙目運算符

10

|

按位或

整型表達式|整型表達式

左到右

雙目運算符

11

&&

邏輯與

表達式&&表達式

左到右

雙目運算符

12

||

邏輯或

表達式||表達式

左到右

雙目運算符

13

?:

條件運算符

表達式1? 表達式2: 表達式3

右到左

三目運算符

14

=

賦值運算符

可修改左值表達式=表達式

右到左


/=

除後賦值

可修改左值表達式/=表達式


*=

乘後賦值

可修改左值表達式*=表達式


%=

取模後賦值

可修改左值表達式%=表達式


+=

加後賦值

可修改左值表達式+=表達式


-=

減後賦值

可修改左值表達式-=表達式


<<=

左移後賦值

可修改左值表達式<<=表達式


>>=

右移後賦值

可修改左值表達式>>=表達式


&=

按位與後賦值

可修改左值表達式&=表達式


^=

按位異或後賦值

可修改左值表達式^=表達式


|=

按位或後賦值

可修改左值表達式|=表達式


15

,

逗號運算符

表達式,表達式,…

左到右

從左向右順序結合


猜你喜歡:

C/C++每日一問--進位轉換

C/C++每日一問--運算符


掃描二維碼關注我

置頂/星標公眾號,和我一起學習吧


碼字不易,點擊在看分享閱讀吧,感謝!


Long-press QR code to transfer me a reward

真心對待每一次學習

As required by Apple's new policy, the Reward feature has been disabled on Weixin for iOS. You can still reward an Official Account by transferring money via QR code.

相關焦點

  • 你不知道的素數判斷方法
    素數判斷?這不是小學學的嗎?您先別著急,不管您是小學,初中還是高中,從事什麼職業,我相信,堅持看完你一定有收穫![C語言必知必會]素數的判斷我們要判斷素數,首先要知道素數的定義。素數:質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。知道了素數的定義,那麼我們應該想一下,如何去判斷一個數是否為素數?
  • 「每日一練」巧用Python判斷101-200之間有多少個素數
    比如說我想要知道101-200之間有多少個素數,看看python是怎麼輸出的?案例判斷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:上述判斷方法
  • 【每日上機】 素數對猜想
    讓我們定義 dn 為:dn = pn+1 – pn,其中 pi 是第i個素數。顯然有 d1=1 且對於n>1有 dn 是偶數。
  • 如何判斷一個數是素數呢?
    素數這個詞,我們經常在數學題中看到,判斷一個數是否是素數,首先,我們先來了解一下素數的概念,素數一般指質數。質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。了解概念之後,我們來看一道簡單的例題:判斷101到200之間的素數根據題目,我們通過編程的思想進行分析,判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除, 則表明此數不是素數,反之是素數。
  • C語言編程:驗證哥德巴赫猜想
    a = b + c(其中a是大於等於6的整數,b和c是素數)這個問題就等價於:對於一個給定的大於等於4的偶數a,怎麼找到素數b和c呢?可以用循環的方法,把b的值從3循環到a-3,那麼對應的c的值就是a-3到3。然後我們分別對每一組的b和c值進行是否是素數的判斷。
  • Python如何判斷一個正整數是否是素數?
    如2、3、5、7、11都是素數,因為找不到除了1和其本身之外的約數;而4、6、8都是合數,因為4可以整除2,6可以整除2和3,8可以整除2和4。而一個數的約數必然是不超過該數的,加上素數必需是只有1和本身是其約數的條件。於是,我們可以通過枚舉小於該數,並且大於1的整數,來判斷該數是否是素數。
  • C語言編程求解:1到1000之間所有的素數
    算法思考:判斷一個數是不是素數,只需要判斷它是不能只能被1和自身整除。那怎麼判斷一個數不能被除1和自身之外的其他數整除呢?想法是寫一個循環,循環裡依次除以從2到這個數減1的所有的整數,如果都不能整除,說明這個數是素數;如果出現一個能整除的數,那麼這個數不是素數。(其實,判斷素數還可以優化,循環裡依次除以從2到這個數平方根的所有的整數就可以了。因為假設一個數n,除以2~根號n的整數,都不能整除,那麼除以根號n~n-1的整數也不能整數。
  • 剖析C語言中a=a+++a的無聊問題
    更有人寫出(a++)+(++a) a+(++(++a)) ((a++)++)+a這樣的東西,問應該如何計算。我表示鴨梨很大...本文引用地址:http://www.eepw.com.cn/article/198269.htm  針對這樣的問題我的觀點是,「絕不小心求證,只管大膽胡說!」 哈哈,當然了,我還是要對我的師兄弟們負責的,所以我下面的「胡說」中會儘量有理有據。
  • 每日一題:A2B?
    連結:每日一題:巴塞爾問題三:A<B<C初級結論:已知a,b,c是正數排序不等式舒爾不等式每日一題主要來自微信公眾號考研競賽數學,歷屆全國統一的研究生招生考試、各學校數學專業數學分析、高等代數等課程的招生考試、國內外全國或各高校、省、市或綜合性的競賽試題、相關參考書籍中的典型例題與練習題
  • 素數是什麼,有哪些和素數有關的數學猜想還未得到解決?
    素數的應用在現實生活中,數的分解是許多網絡加密的基礎,我們要把兩個已知數相乘很容易,但是要把一個大數分解卻很難,利用整數的這一非對稱特性,密碼學家巧妙地設計了加密和解密的數學原理,比如RSA非對稱加密算法,就是基於大數分解。
  • 方形,圓形,……,和素數
    為什麼會有很多的孿生素數?我們介紹了素數的一些基本統計特性,這裡我們再介紹素數的一些幾何基本特性。這裡介紹一種稍稍複雜的素數及其分布。這種素數叫高斯素數。高斯素數是指在高斯整數域裡不能因子分解的數。高斯整數指實數和虛數部分都是整數的複數,所有這樣的高斯整數組成了一個整數域,其中的素元素即稱為高斯素數。在數學裡,素元素是指滿足類似整數裡的素數或不可約多項式性質的一個數學對象。
  • 自考「C語言程序設計」模擬試題十一
    一、單項選擇題(共30分,每題1分)  1.在PC機中,『\n』在內存佔用的字節數是(  )  A.1   B.2   C. 3   D.4  2.字符串「ABC」在內存佔用的字節數是(   )  A.3   B.  4
  • 笑話段子:這都不知道,素數就是很樸素的數字
    一、A:「買彩票了,怎麼樣,中了嗎?」B:「這個月都不用擠公交了。」A:「中了?」B:「中個屁,錢全部買彩票了,這個月只能走路上班了。」 三、有一天,我在做判斷題的時候,看見素數,就問同學:「素數是什麼?」
  • 使用程小奔機器人找出100以內的素數
    題目:找出100以內的素數(2-99)。質數又稱素數,指在一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。思路:從2開始依次判斷每個數是不是素數,如果是的話就加入到列表裡。難點在於如何判斷一個數是不是素數,根據素數的定義,需要使用重複執行,只要能被1和自身之外的數整除(餘數=0),那麼就不是素數,停止本次循環,然後去判斷下一個自然數是不是素數。
  • 網友問:當前數學領域,都還有哪些未解之謎?
    一、黎曼猜想這個可以說是數學中最重要的猜想之一,黎曼猜想研究的是素數分布問題,而素數是一切數字的基礎,假如人類掌握了素數分布的規律,那麼能輕鬆解決很多知名的數學難題。四、其他數學未解之謎還有其他一些零散的數學難題,只是重要性,遠遠不及以上三個,比如:1、ABC猜想:若d是abc不同素因數的乘積,d通常不會比c小太多?
  • 希爾伯特第八問題有望終結: 孿生素數猜想獲證!
    而孿生素數猜想的證明也於 2017 年已收錄進《深圳基礎理論原創文集》一書中,並於2019年編進了數論專集《數學底層引擎相鄰論和重合法》一書裡,本文是對孿生素數猜想如何獲證的一次科普闡釋。2013 年張益唐②證明了差值不大於7000萬的相鄰素數對有無窮組,且有數學家已將差值下確界縮小到萬,甚至246。
  • C程序設計的常用算法
    =0) { m=n; n=r; r=m%n; } printf(最大公約數:%dn,n); printf(最小公倍數:%dn,nm/n); }   三、判斷素數   只能被1或本身整除的數稱為素數 基本思想:把m作為被除數,將2—INT( )作為除數,如果都除不盡
  • 數學家研究的素數對人類生活有什麼用?
    素數也叫質數,大家在小學時就學過,就是只能被1和它本身整除的數,例如2,3,5,7,11,13,17,19,23等。這原本是一個非常簡單的概念,但許多數學家卻對素數情有獨鍾,廢寢忘食地研究這些素數之間的規律和最大素數。