查看: 364|回復: 6

用sql解題

[復制鏈接]
論壇徽章:
403
紫蛋頭
日期: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
跳轉到指定樓層
1#
發表于 2019-10-10 20:59 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
素數73939133的每一個末位拿掉,它依然是一個素數。這是目前已知的具有此性質的最大素數。
論壇徽章:
533
生肖徽章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:22海藍寶石
日期:2012-02-20 19:24:27鐵扇公主
日期:2012-02-21 15:03:13
2#
發表于 2019-10-10 21:36 | 只看該作者
SQL> with function fn_prime (p_n in int)
  2  return int
  3  is
  4  begin
  5    if p_n > 1 then
  6      for i in 2..floor(sqrt(p_n)) loop
  7        if mod(p_n,i) = 0 then
  8          return 0;
  9        end if;
10      end loop;
11    else
12      return 0;
13    end if;
14    return 1;
15  end;
16  t as (select level n from dual where mod(level,2) <> 0 connect by level<=10),
17  s(lvl,numstr) as (select 1,to_char(n) from t where fn_prime(n) = 1
18                     union all
19                    select lvl + 1,
20                           s.numstr||t.n
21                      from s,t
22                     where fn_prime(to_number(s.numstr||t.n)) = 1
23                    )
24  select max(to_number(numstr)) from s
25  /

MAX(TO_NUMBER(NUMSTR))
----------------------
              73939133

使用道具 舉報

回復
論壇徽章:
403
紫蛋頭
日期: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
3#
 樓主| 發表于 2019-10-10 22:03 來自手機 | 只看該作者
真厲害

使用道具 舉報

回復
論壇徽章:
526
奧運會紀念徽章:壘球
日期: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
4#
發表于 2019-10-11 04:06 | 只看該作者
這種數太少,所以最基本的判斷法都夠用了。

使用道具 舉報

回復
論壇徽章:
533
生肖徽章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:22海藍寶石
日期:2012-02-20 19:24:27鐵扇公主
日期:2012-02-21 15:03:13
5#
發表于 2019-10-11 09:54 | 只看該作者

難度只相當與偏簡單的PUZZLEUP題

使用道具 舉報

回復
論壇徽章:
526
奧運會紀念徽章:壘球
日期: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
6#
發表于 2019-10-11 10:30 | 只看該作者
不用寫PLSQL也可以:

with
t as (select level n from dual where mod(level,2) <> 0 connect by level<=10),
s(lvl,numstr) as (select 1,to_char(n) from t where n in (2,3,5,7)
                   union all
                  select lvl + 1,
                         s.numstr||t.n
                    from s,t
                   where not exists (select 1 from dual where mod(to_number(s.numstr||t.n)/(level*2+1),1)=0 connect by level<=sqrt(to_number(s.numstr||t.n))/2+1)
                  )
CYCLE numstr SET cycle_flag TO 'Y' DEFAULT 'N'
select max(to_number(numstr)) from s
/

使用道具 舉報

回復
論壇徽章:
533
生肖徽章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:22海藍寶石
日期:2012-02-20 19:24:27鐵扇公主
日期:2012-02-21 15:03:13
7#
發表于 2019-10-11 11:44 | 只看該作者
newkid 發表于 2019-10-11 10:30
不用寫PLSQL也可以:with t as (select level n from dual where mod(level,2)  0 connect by level

是啊,我昨天寫完之后,還真的隱約想不用PLSQL寫一個,意念閃過之后又放棄了,
看到你的實現,真棒!

使用道具 舉報

回復

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則 發表回復

TOP技術積分榜 社區積分榜 徽章 團隊 統計 知識索引樹 積分競拍 文本模式 幫助
  ITPUB首頁 | ITPUB論壇 | 數據庫技術 | 企業信息化 | 開發技術 | 微軟技術 | 軟件工程與項目管理 | IBM技術園地 | 行業縱向討論 | IT招聘 | IT文檔
  ChinaUnix | ChinaUnix博客 | ChinaUnix論壇
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓優訊信息技術有限公司版權所有 聯系我們 
京ICP備09055130號-4  北京市公安局海淀分局網監中心備案編號:11010802021510 廣播電視節目制作經營許可證:編號(京)字第1149號
  
快速回復 返回頂部 返回列表
双色球常规走势图 排列5走势图带连线2元网 北京pk10计划免费 辽宁11选五走势图任 体育彩票开奖结果 迅雷挖宝赚钱 股票涨跌怎么算收益 捕鱼大师电脑版 湖南麻将下载免费下载 梦幻金花两张牌游戏规则 全民麻将作弊透视版下载 看什么新闻好赚钱软件有哪些 山西11选五开奖结果一定牛