java - 质数计算的最短代码

标签 java primes code-golf

我学校计算机科学系的报纸(名为 readme,挪威语,第 19 页)举办了一场有趣的比赛,要求为以下问题编写尽可能短的 Java 代码。

Take in an integer (as a string in the first entry of a string array, since the Java main method only takes a string array) as an argument, and write out first all numbers below this number that are primes, and then all numbers that are not primes. The shortest code wins!

作为回答,我将发布赢得比赛的最短 Java 代码。我想知道 Stack Overflow 社区是否可以制作更短的代码 如果您了解挪威语,您会发现如果您这样做的话您可能会赢得一瓶香槟,但不幸的是比赛的最后提交日期已经结束。

你会如何解决这个问题?

最佳答案

在您将标题更改为“Java”之前,我已经在 Haskell 中做过这件事。由于这是一个社区 wiki,所以它就在这里。

primes n = 
let sieve (p:xs) = p : sieve [x | x<-xs, x `mod` p /= 0] in 
let primes = takeWhile (<n) $ sieve [2..] in 
([0..n] \\ primes, primes)

*Main> primes 20
([0,1,4,6,8,9,10,12,14,15,16,18,20],[2,3,5,7,11,13,17,19])

(edit:) 缩短名称并删除空格使其成为 79 个字符:

p n=let s(p:xs)=p:s[x|x<-xs,x`mod`p/=0];r=takeWhile(<n)$s[2..]in(r,[0..n-1]\\r)

这里还交换了结果对的顺序,并根据规范使用了 n-1

使用次优试验划分将其降低到 50 个字符:

p n=partition(\k->all((>0).rem k)[2..k-1])[2..n-1]

关于java - 质数计算的最短代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/838004/

相关文章:

language-agnostic - Code Golf : Calculate Orthodox Easter date

java - 在多个键之一上缓存逐出

java - 租期过期异常 : Lease mismatch in Hadoop mapReduce| How to solve?

java - 求素数-->筛道

c - 时间复杂度找到 n 个素数,尝试除以所有前面的素数

javascript - 乱码功能大赛

language-agnostic - Code Golf : Zigzag pattern scanning

c# - 如何使用鼠标指针和键盘快捷键捕获文本?

java - 如何回收 LinearLayout 中的 View ,以避免多次调用 findViewById()?

algorithm - 研究人员如何找到如此大的素数?