特殊的质数肋骨

题目描述

农民约翰母牛总是产生最好的肋骨。
你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。
农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说:
7 3 3 1
全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。
7331 被叫做长度 4 的特殊质数。
写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊质数。
数字1不被看作一个质数。

输入

单独的一行包含N

输出

按顺序输出长度为 N 的特殊质数,每行一个

样例输入

4

样例输出

2333
2339
2393
2399
2939
3119
3137
3733
3739
3793
3797
5939
7193
7331
7333
7393

AC代码

#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
int n;
int su(int x)
{
	if(x==1)
		return 0;
	int i,k=sqrt(x);
	for(i=2;i<=k;i++)
	{
		if(x%i==0)
			return 0;
	}
	return 1;
}
void fun(int d,int w)
{
	int i;
	if(w==1)
	{
		fun(2,2);
		fun(3,2);
		fun(5,2);
		fun(7,2);
	}
	else
	{
		for(i=1;i<=9;i+=2) //若位数满足要求,该循环结束后程序就结束了 
		{
			if(su(d*10+i) )
			{
				if(w==n)
					cout<<d*10+i<<endl;
				else
					fun(d*10+i,w+1);	
			}			
		}
	}
}
int main()
{
	cin>>n;
	if(n==1)
		cout<<2<<endl<<3<<endl<<5<<endl<<7<<endl;
	else
		fun(0,1);
	return 0;
}
posted @ 2021-04-14 17:41  斯文~  阅读(55)  评论(0)    收藏  举报

你好!