• HDU4548+筛素数


    先筛出素数,再筛出美素数。

    简单题。

    /*
    筛素数
    */
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    #include<stack>
    #include<math.h>
    #include<map>
    using namespace std;
    const int maxn = 1000005;
    int IsPrime[ maxn ],IsSpecialPrime[ maxn ];
    int GetSum( int x ){
    	int ans = 0;
    	while( x ){
    		ans += x%10;
    		x/=10;
    	}
    	return ans;
    }
    
    void init_prime(){
    	for( int i=1;i<maxn;i+=2 )
    		IsPrime[i] = 1;
    	for( int i=0;i<maxn;i+=2 )
    		IsPrime[i] = 0;
    	IsPrime[1] = 0;
    	IsPrime[2] = 1;
    	for( int i=3;i<maxn;i++ ){
    		if( IsPrime[i]==1 ){
    			int t,delta;
    			delta = i*2;
    			t = delta+i;
    			while( t<maxn ){
    				IsPrime[t] = 0;
    				t += delta;
    			}
    		}
    	}
    	//for( int i=maxn-1;;i-- ){
    		//if( IsPrime[i]==1 ){
    			//printf("max=%d
    ",i);
    			//break;
    		//}
    	//}
    	//memset( IsSpecialPrime,0,sizeof(IsSpecialPrime) );
    	for( int i=0;i<maxn;i++ ){
    		if( IsPrime[i]==1&&IsPrime[GetSum(i)]==1 ){
    			IsSpecialPrime[i] = 1;
    		}
    		else{
    			IsSpecialPrime[i] = 0;
    		}
    	}
    	for( int i=1;i<maxn;i++ )
    		IsSpecialPrime[ i ] += IsSpecialPrime[ i-1 ];
    }
    int main(){
    	init_prime();
    	int ca;
    	scanf("%d",&ca);
    	int T = 1;
    	while( ca-- ){
    		printf("Case #%d: ",T++);
    		int L,R;
    		scanf("%d%d",&L,&R);
    		printf("%d
    ",IsSpecialPrime[R]-IsSpecialPrime[max(0,L-1)]);
    	}
    	return 0;
    }



  • 相关阅读:
    go websocket
    go websocket 调试报错 request origin not allowed by Upgrader
    uniapp中使用阿里巴巴图标iconfont
    TS视频一
    ReactiveCocoa
    weak 的内部实现原理
    谈Objective-C block的实现
    基础面试总结
    理解 iOS 的内存管理
    URL Scheme
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3241466.html
Copyright © 2020-2023  润新知