题目描述
农民约翰的母牛总是产生最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质数,举例来说: 7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。 7331 被叫做长度 4 的特殊质数。写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊质数。数字1不被看作一个质数。
输入输出格式
输入格式:
单独的一行包含N。
输出格式:
按顺序输出长度为 N 的特殊质数,每行一个。
输入输出样例
输入样例#1: 复制
4
输出样例#1: 复制
2333 2339 2393 2399 2939 3119 3137 3733 3739 3793 3797 5939 7193 7331 7333 7393
说明
题目翻译来自NOCOW。
USACO Training Section 1.5
var
i,n,b:longint;
function pd(m:longint):boolean;
var i,j:longint;
begin
if m=1 then exit(false);
for i:=2 to trunc(sqrt(m)) do
if m mod i=0 then exit(false);
exit(true);
end;
procedure work(m:longint);
var i,j,k,l:longint;
begin
if m>n then begin writeln(b);exit;end;
for i:=1 to 9 do
begin
if (i=5)or(i mod 2=0) then continue;
if pd(b*10+i) then begin
b:=b*10+i;
work(m+1);
b:=b div 10;
end;
end;
end;
begin
readln(n);
b:=2;work(2);
b:=3;work(2);
b:=5;work(2);
b:=7;work(2);
end.