• 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;
    }
    

  • 相关阅读:
    Java(二)
    JS === 关于getElementsByClassName()
    JS === 简易放大镜
    JS === 拖拽盒子
    JS === 实现多个光标跟随事件
    JS === 实现回到顶部
    JS === 实现通过点击td 跳转相应的图片
    final、static关键字
    java面向对象——构造方法
    java面向对象——多态
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4265988.html
Copyright © 2020-2023  润新知