• Project Euler 35 Circular primes



    题意:197被称为圆周素数,因为将它逐位旋转所得到的数:197/971和719都是素数。小于100的圆周素数有十三个:2、3、5、7、11、13、17、31、37、71、73、79和97。小于一百万的圆周素数有多少个?


    /*************************************************************************
        > File Name: euler035.c
        > Author:    WArobot 
        > Blog:      http://www.cnblogs.com/WArobot/ 
        > Created Time: 2017年06月25日 星期日 18时56分56秒
     ************************************************************************/
    
    #include <stdio.h>
    #include <math.h>
    #include <inttypes.h>
    
    #define MAX_N 10000000
    
    int32_t prime[MAX_N] = {0};
    void init_prime(){
    	for(int i = 2 ; i * i < MAX_N ; i++) {
    		if( prime[i] == 0 ) {
    			for(int j = 2 * i ; j < MAX_N ; j += i)		prime[j] = 1;
    		}
    	}
    }
    bool IsCircularNumber(int32_t x){
    	if (prime[x] != 0)		return false;
    	int32_t t = x , d , h;
    	d = (int32_t)floor(log10(x) + 1);
    	h = (int32_t)pow(10 , d - 1);
    	for(int32_t i = 0 ; i < d - 1 ; i++) {
    		t = (t / h) + (t % h) * 10;
    		if (prime[t] != 0)	return false;
    	}
    	return true;
    }
    int32_t main() {
    	init_prime();
    	int32_t cnt = 0;
    	for(int32_t i = 2 ; i * 10 <= MAX_N ; i++) {
    		if( IsCircularNumber(i) )	cnt++;
    	}
    	printf("%d
    ",cnt);
    	return 0;
    }
  • 相关阅读:
    是否是轮回(续)
    夜雨做成秋
    53分
    浮生六记 一成长星和月
    企业信息化常见缩略语汇总
    是否是轮回
    对信号集操作函数的使用方法和顺序
    fcntl.h
    关于linux信号量的基本使用
    linux 共享内存
  • 原文地址:https://www.cnblogs.com/WArobot/p/7077763.html
Copyright © 2020-2023  润新知