题解 | #判断一个数是不是质数#

判断一个数是不是质数

http://www.nowcoder.com/practice/b8bb5e7703da4a83ac7754c0f3d45a82

题意整理。

  • 输入一个大于1的数。
  • 判断这个数是否是质数。

方法一(循环)

1.解题思路

  • 如果一个数除了被1和它本身整除,不能被其它任何数整除,则这个数是质数。所以只需要验证输入的数字n能否被2到n-1之间的任何数整除。
  • 再进一步思考,如果n能被一个大于n\sqrt{n}的数整除,我们不妨设这个大于n\sqrt{n}的数为t,则n也一定能被n/tn/t整除,而n/t是小于n\sqrt{n}的,所以只需验证输入的数字n能否被2到n\sqrt{n}之间的任何数整除。

动图展示: alt

2.代码实现

#include <iostream>
using namespace std;

//判断是否是质数
bool isPrime(int x){
    for(int i=2;i*i<=x;i++){
        //如果一个数能被2到根号x之间的任意一个数整除,则不是质数
        if(x%i==0){
            return false;
        }
    }
    return true;
}

int main() {

    int num;
    cin>>num;
    if(isPrime(num)){
        cout<<"是质数"<<endl;
    }
    else{
        cout<<"不是质数"<<endl;
    }

    return 0;
}

3.复杂度分析

  • 时间复杂度:假设输入的数是n,循环最多执行n1\sqrt{n}-1次,所以时间复杂度为O(n)O(\sqrt{n})
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

点赞 评论 收藏
分享
评论
21
2
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
6802次浏览 65人参与
# 你的实习产出是真实的还是包装的? #
1339次浏览 33人参与
# 巨人网络春招 #
11224次浏览 223人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7141次浏览 37人参与
# 简历第一个项目做什么 #
31342次浏览 316人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186568次浏览 1115人参与
# MiniMax求职进展汇总 #
23256次浏览 303人参与
# 研究所笔面经互助 #
118800次浏览 577人参与
# 面试紧张时你会有什么表现? #
30418次浏览 188人参与
# 简历中的项目经历要怎么写? #
309629次浏览 4168人参与
# 职能管理面试记录 #
10726次浏览 59人参与
# AI时代,哪些岗位最容易被淘汰 #
62817次浏览 752人参与
# 网易游戏笔试 #
6382次浏览 83人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
7014次浏览 154人参与
# 腾讯音乐求职进展汇总 #
160448次浏览 1107人参与
# 从哪些方向判断这个offer值不值得去? #
56714次浏览 357人参与
# 正在春招的你,也参与了去年秋招吗? #
362761次浏览 2632人参与
# 你怎么看待AI面试 #
179476次浏览 1186人参与
# 小红书求职进展汇总 #
226924次浏览 1357人参与
# 你的房租占工资的比例是多少? #
92153次浏览 896人参与
# 校招笔试 #
467993次浏览 2955人参与
# 经纬恒润求职进展汇总 #
155724次浏览 1085人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务