当前位置:   article > 正文

C/C++判断是否为素数(最快)_c++是素数吗

c++是素数吗

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数
常规解法,一层for循环从头开始遍历,小于sqrt(n),如果n % i == 0那么则不是素数。

利用数学知识,所有的数都可以用
6n
6n+1
6n+2(3n+1)
6n+3(2n+1)
6n+4(3n+2)
6n+5
来表示,因为加括号的数肯定为素数,所以只需要判断6n+1和6n+5是否为素数,以及最初的1,2,3

#include <iostream>
#include <math.h>
using namespace std;

bool isPrime(int n){//判断素数
    if (n == 1) return false;
    if (n == 2 || n == 3) return true;
    if (n % 6 != 5 && n % 6 != 1) return false;
    for (int i = 5; i < sqrt(n); i+=6){
        //判断是否为奇数,使得算法更高效
        if (n % i == 0 || n % (i + 2) == 0) 
            return false;
    }
    return true;
}
int main()
{
	int n;
	cin>>n;
	if(isPrime(n))
	    cout<<n<<"是素数!"<<endl;
	else
	    cout<<n<<"不是素数!"<<endl;
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/75316?site
推荐阅读
相关标签
  

闽ICP备14008679号