C/C++知识点之详记-判定一个数字是否是素数
从安 2019-06-05 来源 : 阅读 953 评论 0

摘要:本篇文章主要讲述C/C++知识点之详记-判定一个数字是否是素数,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章主要讲述C/C++知识点之详记-判定一个数字是否是素数,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

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知识库!

本文由 @从安 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程