freemandj 2021-04-10 18:08 采纳率: 100%
浏览 32
已采纳

[蓝桥杯][算法提高VIP]找素数【多次提交答案一致不通过,求助帮忙改动】

算法提高 找素数

Description

 

给定区间[L, R] , 请计算区间中素数的个数。

Input

 

输入描述:

两个数L和R。

输入样例:

2 11

Output

 

输出描述:

一行,区间中素数的个数。

输出样例:

5

Sample Input 1

参考上文 

Sample Output 1

参考上文

Hint

HINT:时间限制:1.0s 内存限制:256.0MB

2 <= L <= R <= 2147483647 R-L <= 1000000

Source

蓝桥杯练习系统 ID: 267 原题链接: http://lx.lanqiao.cn/problem.page?gpid=T267

 

 

这是代码,求改,一直不通过

 

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
int main()
{
    ll L, R;
 scanf("%lld%lld", &L, &R);
 bool a[50001], ans[R-L+1];
 memset(a,false,sizeof(a));
    memset(ans,false,sizeof(ans));
  ll cnt = 0, pri[50001];
     for (int i = 2; i <= 50000; ++ i)
        if (!a[i])
        {
            pri[++cnt] = i;
            for (int j = i << 1; j <= 50000; j += i)
                a[j] = 1;
        }
   
    for ( int i = 1; i <= cnt; i++)
    {
        for (ll j = max((ll)2,(L-1)/ pri[i]+1 )* pri[i]; j <= R; j += pri[i])       // 筛出 L~R 中的素数。
            if(j - L >= 0) ans[j - L] = 1;
    }
    int tot = 0;
    for(int i = 0 ; i <= R - L ; ++ i) if(!ans[i]) tot ++;
    printf("%d\n" , tot);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 智者知已应修善业 2021-04-11 20:42
    关注

    判断质素可参https://ask.csdn.net/questions/7404400?spm=1005.2025.3001.5141

    区间的话设置起始值和终止值即可。

    本案例让你自己去对比看哪里问题,自己去核对才是正道。如果非要学我的代码,可在线识别,懒人也该有懒人的办法,至少懒人低头吃能够吃到的饼也算是个办法。

    int a=111,aa=777;while(a<=aa)if(质数判断(a))cout<<a<<endl,a+=2;else a+=2;
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码