zoukankan      html  css  js  c++  java
  • 8项素数和环——枚举法

    (1)  设计要点

       1、为简化输出,环序列简化为一般序列输出,为避免重复,约定首项为“1”。

       2、环中的每一项为一个数字,相连的8项构成一个8位数。因而设置a循环在没有重复数字数字且以“1”开头的8位数12345678——18765432中枚举。注意到所有1——8没有重复数字的8位数的数字和为9的倍数,该数也为9的倍数,为此,枚举循环步长可取9,以精简枚举次数。

    为操作与判断方便,设置3个数组:

          f数组统计8位数a中各个数字的频数。如f[3]=2,即a中有2个数字“3”。

          g数组表示8位数a中每位数的数字。如g[4]=6,即a的从高位开始第4位数为数字“6”。

          b数组标记整数x是否为素数。如b[13]=1,标识“1”表示13为素数,标识“0”为非素数。

    枚举实施:

       1) 注意到8项中每相邻两项之和不超过15,对15以内的5个素数用b数组标注“1”,其余均为“0”。

         2) 在8位数的a 循环中,对a实施8次求余分离出各个数字x,应用f[x]++统计数字x的频数,应用g[9-k]=x记录a的各位数字。

         3) 设置k(1——8)判断循环:

    f[k]!=1 ,表明数字k出现重复或遗漏,返回。

     b[g[k]+g[k+1]]!=1,表明相邻的第k项与第k+1项之和不是素数,返回。顺便说明,为判断方便,首项“1”先行赋值给g[9],以与g[8]相邻,在k循环中一道进行判别。

         4) 通过以上判断筛选的a,其各个数字即为所求的8项素数环的各项,打印输出。

    package com.lanxi.demo1;
    
    import java.util.*;
    public class SuShu{
    public static void main(String arg[])
    {               int count=0;
    		int t,k,s,x;
    		int[] g=new int[10];
    		int[] f=new int[10];
    		int[] b=new int[19];
    		long a,y;   
    		for(k=1;k<=15;k++) 
    			b[k]=0;   
    		g[9]=1;s=0;    
    		b[3]=b[5]=b[7]=b[11]=b[13]=1;        // 5个奇素数标记      
    		System.out.println("8项素数和环:");     
    		for(a=12345678;a<=18765432;a+=9)     // 步长为9枚举8位数       
    		{t=0;y=a;       
    		for(k=0;k<=9;k++) f[k]=0;      
    		for(k=1;k<=8;k++)  {
    			x=(int)y%10;f[x]++;       //  分离a的8个数字,用f数组统计x的个数        
    			g[9-k]=x;            //  用g数组记录a的第k位数字     
    		        y=y/10; 
                            count++;                            
    		    }       
    		for(k=1;k<=8;k++)                       
    			if(f[k]!=1 || b[g[k]+g[k+1]]!=1) t=1;       
    			if(t==1) continue;     //  有相同数字或相邻和非素,返回         
    			s++;                                 
    			System.out.print(s+": 1,");    //  输出8项素数和环         
    			for(k=2;k<=8;k++)       
    				System.out.print(g[k]+",");      
    			System.out.println("");      
    	         } 
                    System.out.println("循环次数:"+count);
    
    }
    }
    

      

  • 相关阅读:
    sass和compass的配置
    MAC apache配置
    js库
    Tomcat7 配置 ssl
    同一对象内的嵌套方法调用AOP失效原因分析
    Spring Boot文件无法下载问题排查过程记录
    Apache、Spring、Cglib的beancopy效率对比
    使用in作为查询条件优化SQL并使用set筛选结果集
    Java使用foreach遍历集和时不能add/remove的原因剖析
    Python爬虫实践——爬取网站文章
  • 原文地址:https://www.cnblogs.com/www-x/p/8232715.html
Copyright © 2011-2022 走看看