[go: up one dir, main page]

矜(bai)持(gei)的云拏 2022-10-17 13:02 采纳率: 81.3%
浏览 15
已结题

关于C的问题,如何解决?

我的疑问:为什么我的程序不能输入?是循环太大了以至于跑不过来了吗?

Description
题目描述
如果n和n+2都是素数,我们称其为孪生素数,比如3和5,5和7都是孪生素数。 给你一个区间[a,b],请问期间有多少对孪生素数?

输入
第一行是一个整数K(K≤ 10000),表示样例的个数。 以后每行一个样例,为两个整数,a和b,1≤a≤b≤5000000。

输出
每行输出一个样例的结果。

样例输入
5
1 3
1 10
1 100
1 1000
1 5000000
样例输出
0
2
8
35
32463


#include<bits/stdc++.h>
using namespace std;
int no_prime[5000001]={0};
int s[5000001]={0};
int main(){
    printf("5\n");
    no_prime[0]=1;
    no_prime[1]=1;
    for(int i=2;i<5000001;i++){
        if(!no_prime[i]){
            for(int j=i*i;j<5000001;j+=i){
                no_prime[j]=1;
            }
        }
    }
//    printf("5\n");
    for(int i=1;i+2<=5000000;i++){
        if(!no_prime[i]&&!no_prime[i+2]) s[i]=s[i-1]+1;
        else s[i]=s[i-1];
    }
//    printf("5\n");
    int ans,k,a,b;
    cin>>k;
    while(k--){
        cin>>a>>b;
        ans=s[b]-s[a-1];
        if((!no_prime[b]&&!no_prime[b+2])||(!no_prime[b-1]&&!no_prime[b+1]))
        printf("%d\n",ans);
    }
    
    return 0;
    
}
  • 写回答
1条回答 默认 最新
  • X-道至简 2022-10-17 13:32
    关注

    前面的循环太大了,你调试的时候先弄小点,看下逻辑是否对, 先把50000001改成5调试下逻辑先
    还有最好加上头文件 iostream

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 10月17日

悬赏问题

  • ¥100 IED中交流采样通道、以及程序流程的设计
  • ¥15 我如果只想表示节点的结构信息,使用GCN方法不进行训练可以吗
  • ¥15 GPTs营销指令提示词和创建方案
  • ¥15 KeiI中头文件找不到怎么解决
  • ¥15 QT6将音频采样数据转PCM
  • ¥15 本地安装org.Hs.eg.dby一直这样的图片报错如何解决?
  • ¥15 下面三个文件分别是OFDM波形的数据,我的思路公式和我写的成像算法代码,有没有人能帮我改一改,如何解决?
  • ¥15 Ubuntu打开gazebo模型调不出来,如何解决?
  • ¥100 有chang请一位会arm和dsp的朋友解读一个工程
  • ¥50 求代做一个阿里云百炼的小实验