首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找到第N对孪生素数

找到第N对孪生素数
EN

Code Golf用户
提问于 2014-06-16 05:27:16
回答 9查看 5K关注 0票数 26

如果两个素数相差无几,两个素数被定义为孪生素数。例如,3和5是孪生素数,是29和31。

编写一个程序,查找第n对孪生素数(其中n来自STDIN),并在STDOUT上打印它们,用逗号和空格分隔。这是密码-高尔夫,所以最短的代码获胜。

样本输入:

代码语言:javascript
运行
复制
3

样本输出:

代码语言:javascript
运行
复制
11, 13
EN

回答 9

Code Golf用户

发布于 2014-06-16 14:31:09

C#,265

代码语言:javascript
运行
复制
using System.Linq;class P{static void Main(string[] args){var i=int.Parse(args[0]);int f=0,c=0;for(int j=1;;j+=2){var b=(Enumerable.Range(1,j).Count(x=>j%x==0)==2);if(f==0 && b){f=j;continue;}if(b){c++;if(c==i){System.Console.WriteLine(f+","+j);break;}j-=2;}f=0;}}}
票数 4
EN

Code Golf用户

发布于 2014-06-16 15:47:23

Ruby94

代码语言:javascript
运行
复制
require'mathn'
n=gets.to_i
a=1
(a+=2;a.prime?&&(a+2).prime?&&n-=1)while n>0
A2gt;<<"#{a}, #{a+2}"

在线测试:http://ideone.com/B2wxnG

票数 2
EN

Code Golf用户

发布于 2014-06-17 17:33:44

T (2008+):344

蛮力CTE查找素数,窗口函数计数n,然后用连接查找孪生子。对于输出< 1,000,则在1秒钟内工作,对于输出< 10,000,则不到一分钟。

金(SQLFiddle 这里):

代码语言:javascript
运行
复制
WITH x(i) AS(SELECT 99 UNION ALL SELECT i-2
FROM x WHERE i>3),z AS(SELECT RANK()OVER(ORDER BY x.i)n,x.i
FROM x x LEFT JOIN x y ON x.i%y.i=0 AND y.i NOT IN(x.i,1)
WHERE y.i IS NULL)SELECT LTRIM(a)+', '+LTRIM(b)FROM(SELECT RANK()
OVER(ORDER BY x.i)n,x.i a,y.i b FROM z x,z y WHERE x.n=y.n-1
AND x.i=y.i-2) o WHERE n=3
OPTION(MAXRECURSION 0)

易读的:

代码语言:javascript
运行
复制
WITH x(i) AS (
   SELECT 99
    UNION ALL
   SELECT i-2
   FROM x
   WHERE i > 3
)
,z AS (
SELECT RANK()OVER(ORDER BY x.i)n,x.i
FROM x x
WHERE NOT EXISTS
  (SELECT *
   FROM x y
   WHERE x.i%y.i = 0
    AND y.i NOT IN (x.i,1)
  )
)
SELECT LTRIM(a)+', '+LTRIM(b)
FROM (
    SELECT RANK()OVER(ORDER BY x.i)n,x.i a, y.i b
    FROM z x, z y
    WHERE x.n = y.n+1
    AND x.i = y.i+2
) o
WHERE n = 3
OPTION(MAXRECURSION 0)
票数 2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/31822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档