zoukankan      html  css  js  c++  java
  • 递推-超级素数

    设计要点

    根据超级素数的定义,m位超级素数去掉高位数字后是m-1位超级素数。一般地,k(k=2,3,......,m)位超级素数去掉高位数字后是k-1位超级素数。

    那么,在已求得g个k-1位超级素数a[i](i=1,2,...,g)时在a[i]的高位加上一个数字j(j=1,2,...,9),得到9g个k位候选数f=j*e[k]+a[i](e[k]=10^(k-1)),只要对这9g个k位候选数检测。这就是从k-1递推到k的递推关系。

    注意到超级m(m>1)位素数的个位数字必然是3或7,则得递推的初始(边界)条件:a[1]=3,a[2]=7,g=2;

    package test;
    import java.util.*;
    
    public class test1 {
        public static void main(String[] args) {
            int i,g,j,k,m,t,s;
            long d = 0,f;
            double[] a=new double[20000];
            double[] e=new double[20];
            double[] b=new double[20000];
            Scanner input=new Scanner(System.in);
            m=input.nextInt();
            g=2;s=0;
            a[1]=3;a[2]=7;e[1]=1;
            for(k=2;k<=m;k++){
                e[k]=e[k-1]*10;
                t=0;
                for(j=1;j<=9;j++)
                    for(i=1;i<=g;i++){
                        f=(long)(j*e[k]+a[i]);
                        if(p(f)==1){
                            t++;b[t]=f;
                            if(k==m){
                                s++;
                                d=f;
                                System.out.println();
                            }
                        }
                    }
                g=t;
                for(i=1;i<=g;i++) a[i]=b[i];
            }
            System.out.println("共"+s+"个"+m+"位超级素数");
            System.out.println("其中最大数为"+d);
        }
        static int p(long k){//设计素数检测函数
            int j,h,z;
            z=0;
            if(k==2)z=1;
            if(k>=3&&k%2==1){
                for(h=0,j=3;j<=Math.sqrt(k);j+=2)
                    if(k%j==0){
                        h=1;
                        break;
                    }
                if(h==0) z=1;//k为素数返回1,否则返回0
            }
            return z;
        }
        
    }
  • 相关阅读:
    windows程序设计第4章Text Output练习(831121)
    约瑟夫问题的递归公式
    哈希(hash)以及C++标准库哈希(std::hash)
    返回顶部的一段代码
    对于使用 UNIKON ALL 中表的顺序
    正则表达式的实际运用
    json.help
    省市区联动
    一个JS时间选择控件
    (转)C# Enum,Int,String的互相转换 枚举转换
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8120076.html
Copyright © 2011-2022 走看看