洛谷P1218 特殊的质数肋骨

15 篇文章 0 订阅

题目描述

求出n位数中满足条件的数字,去除首位,每次还剩下的数字都组成一个质数,举例来说: 7 3 3 1 全部肋骨上的数字 7331是质数;三根肋骨 733是质数;二根肋骨 73 是质数;当然,最后一根肋骨 7 也是质数。 7331 被叫做长度 4 的特殊质数。写一个程序对给定的肋骨的数目 N (1<=N<=8),求出所有的特殊质数。数字1不被看作一个质数。

输入样例:

4 

输出样例:

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

思路

枚举数字,每次给一个质数首位加上一个数字再判断是不是质数。以此类推直到这个数字有n位。
var
  n,l:longint;
function stt(x:longint):boolean;
var
  i:longint;
begin
  if x=1 then exit(false);
  for i:=2 to trunc(sqrt(x)) do
    if x mod i=0 then exit(false);
  exit(true);
end;
procedure tt(x,y:longint);
var
  i:longint;
begin
  for i:=1 to 9 do
    if stt(y*10+i) then
      if x=n then writeln(y*10+i)
      else tt(x+1,y*10+i);
end;
begin
  readln(n);
  tt(1,0);
end.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值