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

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

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

输入:

输入有两个数,一个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 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?