摘要:本篇文章主要讲述C/C++知识点之详记-判定一个数字是否是素数,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。
本篇文章主要讲述C/C++知识点之详记-判定一个数字是否是素数,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。
首先要记得设置一下编译器。
以上就是设置编译器支持C++11标准的步骤。下面进入正题。
判断一个数字是否是素数
#include #include using namespace std; bool isPrime(int n){ if (n<=1) return false; int sqr = int(sqrt(1.0 * n)); for(int i=2; i<=sqr; ++i){ if(n % i == 0) return false; } return true; }
其实一开始那三行我原本打算省略掉的,但是这里还是加上去比较好,之后的内容都默认已经引入了这些库和在std的namespace下。
直接谈谈函数的原理吧,其实很简单,背后的数学原理就不谈了(毕竟比较简单)。这里的函数的工作就是:
1. 判断是不是小于1,如果是那么肯定不是素数,所以返回false
2. 先将输入的数字n转换成浮点数,然后再进行开方处理,得到数字sqr
3. 接下来就是从2开始,一直到开方之后的数字sqr为止,不断地将数字n与2~sqe之间的数进行求余,如果求余结果为0,则表明n可以被整除,那么n就不是素数(因为素数只能被1和自己整除),返回false
4. 如果for循环执行完都没有返回返回false值,那么继续执行,返回true
下面写一道题练练手。
Sexy Primes
Sexy primes are pairs of primes of the form (p, p+6), so-named since "sex" is the Latin word for "six". (Quoted from//mathworld.wolfram.com/SexyPrimes.html)
Now given an integer, you are supposed to tell if it is a sexy prime.
Input Specification:
Each input file contains one test case. Each case gives a positive integer N (≤10)
#include #include using namespace std; bool isPrime(int n){ if (n<=1) return false; int sqr = int(sqrt(1.0 * n)); for(int i=2; i<=sqr; ++i){ if(n % i == 0) return false; } return true; } int main(){ int n; bool flag = true; scanf("%d", &n); if(isPrime(n)){ if(isPrime(n-6)) printf("yes\n%d\n", n-6); else if(isPrime(n+6)) printf("yes\n%d\n", n+6); else flag = false; } else flag = false; if(!flag){ while(!isPrime(n) || !( isPrime(n-6)||isPrime(n+6)) ) ++n; printf("no\n%d\n", n); } return 0; }
本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号