[蓝桥杯] 判断质数/素数

问题描述

Description
给定区间[L, R] , 请计算区间中素数的个数。
Input
两个数L和R。
Output
一行,区间中素数的个数。
Sample Input
2 11
Sample Output
5

问题思路

  • !!!注意0,1不是质数
  • 简单版,必须从2判断到sqrt(n)来,看看是否有数字模等0
  • 高配版:判断2之后,就可以判断从3到sqrt(n)之间的奇数了,无需再判断之间的偶数

代码实现

#include <iostream>
#include <cmath>
using namespace std;

bool isspuer(int t){
    if(t<=1){
        return false;
    }
    for(int i=2;i<=sqrt(t);i++){
        if(t%i==0)
            return false;
    }
    return true;
}

int main()
{
    int a=2,b=11;
	cin >> a >> b;
    int ans = 0;
    for(int i=a;i<=b;i++){
        if(isspuer(i)){
            // cout << i << endl;
            ans++;
        }
    }
    cout << ans << endl;
    return 0;
}
发布了31 篇原创文章 · 获赞 13 · 访问量 9881

猜你喜欢

转载自blog.csdn.net/qq_43497702/article/details/104046247