zoukankan      html  css  js  c++  java
  • 49 我素故我在

    49 我素故我在

    作者: xxx时间限制: 1S章节: 深度优先搜索

    问题描述 :

    有这样一种素数叫纯素数(YY出来的名字),当它是一个多位数的时候,你把它的末位去掉之后余下的数依然是一个素数。比如说2393,2393 本身是一个素数,它的末位去掉之后,余下的是239。239 是一个素数,它的末位去掉之后,余下的是23 。23是一个素数,它的末位去掉之后,余下的是2 。2依然还是一个素数。纯素数的长度叫做“维”。2393 是一个4维素数。3797也是一个4维素数。

    输入说明 :

    第一行先给出一共有多少组数据N(N<=1000),接下来有N组数据.

    每组包括一个整数T(1<=T<=8)。

    输出说明 :

    按照从小到大的顺序输出所有的T维纯素数。

    输入范例 :
    3
    8
    1
    4

    输出范例 :
    23399339
    29399999
    37337999
    59393339
    73939133
    2
    3
    5
    7
    2333
    2339
    2393
    2399
    2939
    3119
    3137
    3733
    3739
    3793
    3797
    5939
    7193
    7331
    7333
    7393

    code

    #include<stdio.h>
    #include<math.h>
    
    int num[10][100]; 
    
    int l[10];  
    
    int isp(int x)  
    {
    	if (x <= 1)
    		return 0;
    	if (x == 2)
    		return 1;
    	int lim = (int)sqrt((double)x);
    	for (int i = 2; i <= lim; ++i)
    	if (!(x % i))
    		return 0;
    	return 1;
    }
    
    void DFS(int x, int len, int cnt)
    {
    	if (len>8)
    		return;
    	num[len][cnt] = x;  
    	for (int i = 1; i<10; ++i) 
    	{
    		if (isp(10 * x + i)) 
    			DFS(10 * x + i, len + 1, ++l[len + 1]);
    	}
    }
    
    int main()
    {
    	for (int i = 2; i<10; ++i)
    	{
    		if (isp(i))  
    			DFS(i, 1, ++l[1]);
    	} 
    	int n;
    	scanf("%d", &n);
    	for (int i = 0; i < n;i++)
    	{
    		int m;
    		scanf("%d", &m);
    		for (int i = 1; i <= l[m]; ++i) 
    			printf("%d
    ", num[m][i]);
    	}
    	return 0;
    }
    
    Yesterday is history,tomorrow ismystery,but today is a gift!That why it is called Present!
  • 相关阅读:
    Java Stax操作XML简介
    使用JAXB来实现Java合xml之间的转换
    WebService学习笔记系列(四)
    JavaWeb学习笔记总结 目录篇
    成为谷歌的java程序员首先要做到这五点!
    Java实现快速排序
    二叉树遍历(Java实现)
    Java单链表反转
    学好java,做好工程师必读的15本书
    最全前端资源汇集
  • 原文地址:https://www.cnblogs.com/VictorierJwr/p/12775670.html
Copyright © 2011-2022 走看看