m2y_miku 2018-12-21 15:55 采纳率: 0%
浏览 2731
已结题

两个数,求两个数之间素数的个数,数据非常大。

题目描述
给你两个数,求两个数之间素数的个数。

输入:

输入有两个数,一个a,一个b,求a到b之间素数的个数
其中1<=a<=b<=1e12
其中b-a<=1e7

输出:

一个数,表示a-b之间素数的个数。

样例输入:

1 10

样例输出:

4

  • 写回答

3条回答

  • wuerlongxin 2018-12-21 13:12
    关注
    #include <stdio.h>
    #include<math.h>
    
    
    bool isPrime(int num)
    {
        int i = 2;
        if(num <= 1)
        {
            return false;
        }
    
        int sqrNum = sqrt(num);
    
        for(i = 2; i <= sqrNum; i++)
        {
            if(num % i == 0)
            {
                return false;
            }
        }
        return true;
    }
    
    int getPrimeCount(int a, int b)
    {
        int sum = 0;
        if(a > b)
        {
            return sum;
        }
    
        for(; a <= b; a++)
        {
            if(isPrime(a))
            {
                sum++;
            }
        }
        return sum;
    }
    
    int main()
    {
        int a, b;
        printf("input two num:\n");
        scanf("%d %d", &a, &b);
        printf("sum is %d\n", getPrimeCount(a, b));
    }
    

    两个函数,分别是判断是否为素数,和获取两个数之间素数的个数。为了快速得出是否为素数,这里只判断小于该数的开方的数能否被除尽。

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题