• 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;
    }
  • 相关阅读:
    Jmeter学习总结
    WABAPI使用
    EF 学习笔记
    WCF学习笔记
    MVC学习笔记
    IIS使用问题
    CSS学习笔记
    Rotate Image
    Two Sum
    野指针及c++指针使用注意点
  • 原文地址:https://www.cnblogs.com/WArobot/p/7077763.html
Copyright © 2020-2023  润新知