楼主: newkid

[每日一题] puzzleup 2018

[复制链接]
论坛徽章:
30
生肖徽章:猴
日期:2015-03-20 10:13:49ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:31优秀写手
日期:2015-03-07 06:00:14沸羊羊
日期:2015-03-13 13:26:07美羊羊
日期:2015-04-06 20:32:13天蝎座
日期:2015-07-20 12:34:47射手座
日期:2015-09-18 12:38:55乌索普
日期:2016-08-03 07:04:28奥运会纪念徽章:手球
日期:2016-09-26 07:19:26山治
日期:2016-10-19 05:48:10
311#
发表于 2018-11-26 16:07 | 只看该作者
收藏了。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
312#
 楼主| 发表于 2018-11-29 03:35 | 只看该作者
#18 PRIME NUMBER

Starting from the rightmost digit, all digits of a prime number are removed and after removal of each digit the resulting number is still prime. What is the largest such number?

For example: 3797 has this property because 3797, 379, 37 and 3 are prime numbers.

从一个素数的最右边的数字开始,删除素数的所有数字,并且在移除每个数字之后,得到的数字仍然是素数。这样的素数最大是多少?

例如:3797具有此属性,因为3797,379,37和3是素数。
------------------
除了搞素数表好像也没其他办法。

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
313#
发表于 2018-11-29 05:51 | 只看该作者
第一位2357找中间都是奇数数字的cte

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
314#
发表于 2018-11-29 09:53 | 只看该作者
〇〇 发表于 2018-11-29 05:51
第一位2357找中间都是奇数数字的cte

按你的:

SQL> set timing on;
SQL>
SQL>
SQL> with
  2  function fn_prime (p_prime in integer) return int
  3  is
  4    i integer :=2;
  5  begin
  6    while (i<=sqrt(p_prime)) loop
  7      if mod(p_prime,i) = 0 then
  8        return 0;
  9      else
10        i := i+1;
11      end if;
12    end loop;
13    return 1;
14  end;
15  t as (select level n from dual where mod(level,2) <> 0 connect by level <=10),
16  s(lvl,nlist) as (select 1,decode(n,1,2,n) from t where n < 9
17                         union all
18                        select lvl + 1,
19                               to_number(s.nlist||t.n)
20                          from s,t
21                         where lvl < 10
22                           and fn_prime (to_number(s.nlist||t.n)) = 1 )
23  select max(nlist) from s
24  /
MAX(NLIST)
----------
  73939133
Executed in 0.063 seconds

SQL>
SQL> with
  2  function fn_prime (p_prime in integer) return int
  3  is
  4    i integer :=2;
  5  begin
  6    while (i<=sqrt(p_prime)) loop
  7      if mod(p_prime,i) = 0 then
  8        return 0;
  9      else
10        i := i+1;
11      end if;
12    end loop;
13    return 1;
14  end;
15  t as (select level n from dual where mod(level,2) <> 0 connect by level <=10),
16  s(lvl,nlist) as (select 1,decode(n,1,2,n) from t where n < 9
17                         union all
18                        select lvl + 1,
19                               to_number(s.nlist||t.n)
20                          from s,t
21                         where lvl < 15
22                           and fn_prime (to_number(s.nlist||t.n)) = 1 )
23  select max(nlist) from s
24  /
MAX(NLIST)
----------
  73939133
Executed in 0.062 seconds

所以 73939133 这就应该是最大的了。

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
315#
发表于 2018-11-29 10:25 | 只看该作者
可以不要位数判断:

SQL> with
  2  function fn_prime (p_prime in integer) return int
  3  is
  4    i integer :=2;
  5  begin
  6    while (i<=sqrt(p_prime)) loop
  7      if mod(p_prime,i) = 0 then
  8        return 0;
  9      else
10        i := i+1;
11      end if;
12    end loop;
13    return 1;
14  end;
15  t as (select level n from dual where mod(level,2) <> 0 connect by level <=10),
16  s(nlist) as (select decode(n,1,2,n) from t where n < 9
17               union all
18              select to_number(s.nlist||t.n)
19                from s,t
20               where fn_prime (to_number(s.nlist||t.n)) = 1 )
21  select max(nlist) from s
22  /
MAX(NLIST)
----------
  73939133

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
316#
发表于 2018-11-29 10:38 | 只看该作者
目前已经有了二成半的功力,应付这种中小学题目绰绰有余

In[1]:= Max@FixedPointList[Cases[#*10 + Range@9 & /@ #, _?PrimeQ, 2] &, {0}]
Out[1]= 73939133

带空格都不超过70个字符,有不服气的语言吗

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
317#
发表于 2018-11-29 11:51 | 只看该作者
lugionline 发表于 2018-11-29 10:38
目前已经有了二成半的功力,应付这种中小学题目绰绰有余

In[1]:= Max@FixedPointList[Cases[#*10 + Rang ...

NIUBILITY

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
318#
发表于 2018-11-29 15:17 | 只看该作者
solomon_007 发表于 2018-11-29 10:25
可以不要位数判断:

SQL> with

COUNT(NLIST)
------------
          83

Elapsed: 00:00:00.08
符合条件的才这么点

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
319#
发表于 2018-11-29 17:46 | 只看该作者
〇〇 发表于 2018-11-29 15:17
COUNT(NLIST)
------------
          83

是啊,确实蛮少的;刚看这个题,还以为又要复习一下筛法写法,没想到简单判断一下就够了。

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
320#
 楼主| 发表于 2018-11-29 22:27 | 只看该作者
solomon_007 发表于 2018-11-29 10:25
可以不要位数判断:

SQL> with

不错,我还以为要查素数表呢,想不到函数就搞定了。你这个函数可以改良一下,只检查奇数因子,步长为2。拼上去的字符不用考虑5, 当然5的倍数很快就会被淘汰,也无所谓。
发章了,点一个!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表