C++如何判斷一個(gè)數(shù)是不是素?cái)?shù)
如何判斷一個(gè)數(shù)是不是素?cái)?shù)
題目:判斷一個(gè)數(shù)是不是素?cái)?shù),1 < N <= 50000
思路
判斷n是否整除(求余是否等于0)大于1而小于sqrt(n)中的任何一個(gè)數(shù),如果有則不是素?cái)?shù),否則是素?cái)?shù)
實(shí)現(xiàn)代碼
// 判斷一個(gè)數(shù)是不是素?cái)?shù),1 < N <= 50000
#include <iostream>
#include <cmath>
using namespace std;
// 如果為真,即是素?cái)?shù);否則,不是素?cái)?shù)
bool isPrime(int n) {
int i;
for(i = 2; i <= sqrt(n); i++) {
if((n % i) == 0) // 如果能被除了1和它本身的數(shù)整除,就不是素?cái)?shù)
return false;
}
return true; // 是素?cái)?shù)
}
int main(int argc, const char * argv[]) {
int n;
bool isFlag;
while(cin >> n) {
isFlag = isPrime(n); // 調(diào)用判斷是否是素?cái)?shù)的函數(shù)
if(isFlag)
cout << n << "是素?cái)?shù)" << endl;
else
cout << n << "不是素?cái)?shù)" << endl;
}
return 0;
}快速判斷一個(gè)數(shù)是不是素?cái)?shù)(質(zhì)數(shù))
樸素的方法
判斷從2到sqrt(n)是否有數(shù)可以與其整除。
下面介紹一個(gè)更快的方法
質(zhì)數(shù)有一個(gè)分布規(guī)律——大于等于5的質(zhì)數(shù)一定和6的倍數(shù)相鄰。栗子:5和7,11和13。
由此進(jìn)行剪枝,達(dá)到優(yōu)化的效果。
Code
#include<iostream>
#include<cmath>
using namespace std;
int prime(int num) //判斷素?cái)?shù)
{
if (num == 1)
return 0;
if (num == 2 || num == 3)
return 1;
if (num % 6 != 1 && num % 6 != 5)
return 0;
int tmp = sqrt(num);
for (int i = 5; i <= tmp; i += 6)
if (num % i == 0 || num % (i + 2) == 0)
return 0;
return 1;
}
int main()
{
int n;
cin >> n;
if (prime(n)) cout << "這個(gè)數(shù)是素?cái)?shù)" << endl;
else cout << "這個(gè)數(shù)不是素?cái)?shù)" << endl;
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié)
這篇文章主要介紹了C語(yǔ)言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié),是C語(yǔ)言入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
C語(yǔ)言實(shí)現(xiàn)超市管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)超市管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07
C語(yǔ)言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)圖的遍歷之深度優(yōu)先搜索實(shí)例,采用不同的方法實(shí)現(xiàn)了深度優(yōu)先搜索算法,有不錯(cuò)的借鑒價(jià)值,需要的朋友可以參考下2014-09-09
C語(yǔ)言實(shí)現(xiàn)彈跳小球動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)彈跳小球動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
C++ 類(lèi)中有虛函數(shù)(虛函數(shù)表)時(shí) 內(nèi)存分布詳解
下面小編就為大家?guī)?lái)一篇C++ 類(lèi)中有虛函數(shù)(虛函數(shù)表)時(shí) 內(nèi)存分布詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
Qt編寫(xiě)自定義控件實(shí)現(xiàn)抽獎(jiǎng)轉(zhuǎn)盤(pán)
這篇文章主要為大家詳細(xì)介紹了Qt編寫(xiě)自定義控件實(shí)現(xiàn)抽獎(jiǎng)轉(zhuǎn)盤(pán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06

