zoukankan      html  css  js  c++  java
  • UVa 10533

    题目:输出给定区间中,本身是素数,而且这个数的各位之和也是素数的数(称为位素数)的个数。

    分析:数论。首先利用筛法,求出1000000内的全部的素数;然后在利用生成的素数表,

                推断每一个数是不是各位之和也是素数;再后求出从0開始到随意区间中包括位素数数的个数;

                最后输出两个区间之差就是区间中的位素数的个数。

    说明:达标法计算,查询输出。

    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    
    using namespace std;
    
    int prime[1000002];
    int visit[1000002];
    
    int bits( int k )
    {
    	int bit = 0;
    	while ( k ) {
    		bit += k%10;
    		k /= 10;
    	}
    	return bit;
    }
    
    int main()
    {
    	memset( visit, 0, sizeof(visit) );
    	memset( prime, 0, sizeof(prime) );
    	prime[0] = 0; prime[1] = 0;
    	for ( int i = 2 ; i < 1000000 ; ++ i )
    		if ( !visit[i] ) {
    			for ( int j = i*2 ; j < 1000000 ; j += i )
    				visit[j] = 1;
    			if ( !visit[bits(i)] ) 
    				prime[i] = prime[i-1]+1;
    			else prime[i] = prime[i-1];
    		}else prime[i] = prime[i-1];
    	
    	int n,a,b;
    	while ( ~scanf("%d",&n) ) {
    		for ( int i = 0 ; i < n ; ++ i ) {
    			scanf("%d%d",&a,&b);
    			printf("%d
    ",prime[b]-prime[a-1]);
    		}
    	}
    	return 0;
    }
    

  • 相关阅读:
    MySQL "show users"
    MySQL
    A MySQL 'create table' syntax example
    MySQL backup
    MySQL show status
    Tomcat, pathinfo, and servlets
    Servlet forward example
    Servlet redirect example
    Java servlet example
    How to forward from one JSP to another JSP
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4265988.html
Copyright © 2011-2022 走看看