C++如何判断素数

简介: C++如何判断素数

素数又称为质数,是指除了1和本身之外,不能被其他数整除的一类数。即对给定的正整数n,如果对任意的正整数a(1<a<n),都有n%a!=0成立,那么称n是素数;否则,如果存在a(1<a<n),使得n%a==0,那么称n为合数。应特别注意的是,1既不是素数,也不是合数。


从素数的定义中,我们可以知道,一个整数m要被判断为素数,需要判断n是否能被2、3…n-1中的一个整除,只有2,3,…,n-1都不能整除n,n才能判定为素数,而只要有一个能整除n的数出现,n就可以判定为非素数。


这样的判定方法没有问题,时间复杂度为O(n),但可以优化,因为如果k是n的一个约数,那么n/k也是n的一个约数,k和n/k必然满足,一个小于等于sqrt(n),另一个大于等于sqrt(n),其中sqrt(n)为根号n。所以只要判断n是否能被2,3…sqrt(n)中的一个数整除,即可判定n是否为素数,时间复杂度为O(sqrt(n))。


代码如下:


bool isPrime(int n){
  if(n<=1) return false;//特判
  int sqr=(int)sqrt(n);//根号n
  for(int i=2;i<=sqr;i++){//遍历2~根号n 
  if(n%i==0) return false;//n是i的倍数,则n不是素数 
  } 
  return true;//n是素数 
}


如果查询1~100以内的素数,完整程序如下:


bool isPrime(int n){
  if(n<=1) return false;//特判
  int sqr=(int)sqrt(n);//根号n
  for(int i=2;i<=sqr;i++){//遍历2~根号n 
  if(n%i==0) return false;//n是i的倍数,则n不是素数 
  } 
  return true;//n是素数 
}
目录
相关文章
|
4月前
|
Java Go C++
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
27 0
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
|
4月前
|
Java Go C++
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
39 0
C/C++每日一练(20230426) 不喜欢带钱的小C、数组排序、超级素数
|
人工智能 算法 C语言
C/C++中的素数判定
素数又称质数。如何有效判断素数?暴力试除、筛法。埃氏筛、欧拉筛,动图演示、代码实例。
119 1
C/C++中的素数判定
|
C++
实验 1 C++简单程序设计(1判断素数.2平均值 3.)
要求: (1)VS2010中创建工程和C++源程序文件。 (2)使用C++中的输入输出头文件和main()函数格式。 (3)程序中使用cin和cout实现数据的输入和输出,并在程序中给出必要的用户提示信息。
130 0
|
C++
C++判断素数详细讲解与代码
C++判断素数详细讲解与代码
209 0
C++判断素数详细讲解与代码
|
C++ 机器学习/深度学习 算法
2014秋C++第11周项目6参考-回文、素数
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 【项目6-回文、素数】(1)编制一个函数reverse,返回给定数据的“反序数”,例如输入1234,输出4321。请编制reverse函数,在下面代码的基础上补充相关的部分,实现要求的功能。 int
1570 1
|
C++ 机器学习/深度学习
C++第11周项目3——回文、素数
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 【项目3-回文、素数】 (1)编制一个函数reverse,返回给定数据的“反序数”,例如输入1234,输出4321。 #include &lt;iostream&gt; using namespace std; int reverse(int);//自定义函数的原
1305 1
|
机器学习/深度学习 C++
C++第13周项目4——多文件组织回文、素数
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目4-多文件程序组织】  按《C++程序设计题解与上机指导》P226第15.4节的提示,建立一个包含多个文件的项目,将第12周“项目4-回文、素数”中所做工作用多文件组织起来。其中,main()函数保存在一个文件中,所有自定义函数保存到另外一个文件中,运行程序并得
1118 0
|
机器学习/深度学习 C++
C++第12周项目4——用函数解决素数、回文数等
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 【项目4-回文、素数】   编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数,isPalindrome()用于判断参数是否是回文数,调用函数回答以下问题(可以分别编制几个程序完成,也可以在一个main()函数中完成,输出时,用明显的提示语,
1427 0