栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

xtu 1237 打表

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

xtu 1237 打表

题目描述

如果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 
#include 
#include 

int s[5000005]={0};
int p[5000005];
int main()
{
    int n;
    int a,b,o=0,i,j;

    for(i=2;i<5000005;i++){
        if(s[i]==0){
            for(j=i+i;j<5000005;j=j+i){
                s[j]=1;
            }
        }
    }
    for(i=5;i<5000005;i++){
        if(s[i]==0){
            if(s[i-2]==0)
                o++;
        }
        p[i]=o;
    }
    p[1]=0;
    p[2]=0;
    p[3]=0;
    p[4]=0;
    scanf("%d",&n);
    while(n--){
        scanf("%d%d",&a,&b);
        if(p[a+1]>p[a]){
            printf("%dn",p[b]-p[a]-1);
        }
        else
        printf("%dn",p[b]-p[a]);
    }

    return 0;
}

 很经典的打表,多多学习!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/690748.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号