筛选素数,打表,区间内特定元素的个数

来源:互联网 发布:怎么使用阿里云 编辑:程序博客网 时间:2024/06/11 07:22
#include<stdio.h>
int notprime[1000010];
int arr[1000010]={0,0};
int main(){
    int i,j,k,m,n;
    int cnt=0;
    int T;
    int l,r;
    int kase;
    for(i=2;2*i<1000010;i++){
        if(!notprime[i]){
            for(j=2*i;j<1000010;j+=i){
                notprime[j]=1;
            }
        }
    }//素数打表;
    for(i=2;i<1000010;i++){
        if(!notprime[i]){
            int d=0;
            int t=i;
            while(t){
                d+=t%10;
                t/=10;
            }
            if(!notprime[d]) {
                cnt++;
            }
        }
        arr[i]=cnt;
    }
    scanf("%d",&T);
    for(kase=1;kase<=T;kase++){
        scanf("%d%d",&l,&r);
        printf("Case #%d: %d\n",kase,arr[r]-arr[l-1]);
    }
    return 0;
}
0 0
原创粉丝点击