zoukankan      html  css  js  c++  java
  • 求一亿以内的回文质数(素数)

    求一亿以内的回文素(质)数

    先求质数再判断回文,效率低下;所以先构造回文数,再判断质数。
    偶数位的回文数都能被11整除。所以,偶数位的回文数除了11都是合数。

    观察偶数位的回文数,提取所有奇数位的数字,与提取所有偶数位的数字,正好是相反的顺序。
    因此,偶数位数和等于奇数位数和,从而差等于0,而0能被11整除,因此这个回文数,可以被11整除
    例:1331 13 31
    或者
    an…a2a1a1a2…an.然后可将其改写(首尾两两依次配对):an...a2a1a1a2...an=an*(10^(2n-1)+1)+...+a2*(10^(2*2-1)+1)*10^(n-2)+a1*(10^(2*1-1)+1)*10^(n-1)可以看到求和的每一项均有因式10^(2k-1)+1
    而该因式又含有因式10+1=11,故和是11的倍数。

    一个k位数,可以构造出一个奇数位的回文数。比如13,可以构造131;189可以构造18981.所以100000000内的只要从1构造到9999即可。

    import java.util.ArrayList;
    
    public class 一亿以内的回文质数 {
    	public static ArrayList<Integer> list = new ArrayList<Integer>(); 
    	public static void main(String[] args) {
    		list.add(11);
    		for (int i = 2; i < 100; i++) {
    			int tmp = i / 10, sum;
    
    			for (sum = i; tmp != 0; tmp /= 10) {
    				sum = sum * 10 + tmp % 10;
    			}
    
    			bool(sum);
    		}
    		System.out.println(list);
    	}
    	public static void bool(int n){
    		int sqrt =   (int) Math.sqrt(n+0.5);
    		for(int i:list){
    			if(n%i==0){
    				return  ;
    			}
    			else if(i>sqrt){
    				return  ;
    			}
    		}
    		list.add(n);
    		return  ;
    	}
    
    }
    
    
  • 相关阅读:
    JMeter4.0的单机压测和集群压测简介
    接口自动化测试,完整入门篇
    jmeter实战---正则提取器
    压测必经之路,解读JMeter分布式
    JMeter线程组参数含义
    jmeter生成HTML性能测试报告
    SPP-Net、Atrous Convolution以及ASPP by Rose
    使用CNN进行角度估计
    Java相关书籍分享
    Code Conventions for the Java
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946662.html
Copyright © 2011-2022 走看看