我们共享主要集群吗?


10

素簇的整数的Ñ高于2被定义为通过最高素所形成的一对严格低于Ñ和最低素严格高于Ñ

请注意,按照上述定义,如果整数是质数本身,然后其首要簇是一对素数的前述随后它。

任务

给定两个整数,整数NMN,M≥3),根据NM是否具有相同的素数簇,输出真实/虚假值

这是,因此目的是尽可能减少字节数。因此,以每种编程语言中最短的代码为准。

测试用例/示例

例如,9的素类为[7, 11],因为:

  • 7是严格低于9的最高素数,并且
  • 11是严格高于9的最低素数。

同样,素数群集67[61, 71](请注意67是素数)。

真对

8、10
20、22
65、65
73、73
86、84
326、318
513、518

假对

4、5
6、8
409、401
348、347
419、418
311、313
326、305

真值/伪值必须是两个不同的值,还是可以定义一个从程序输出到真值/伪值并输出(可能无限地)许多不同值的映射?
乔纳森·弗雷奇

@JonathanFrech每个决策问题定义的真相/虚假,不一定一致,但分明和真实/虚假
Xcoder先生,2017年

Answers:


14

果冻6 4 3 5 4字节

rÆPE

在线尝试!尝试所有测试用例

怎么运行的

rÆPE    Main link. Arguments: N, M
r       Yield the range of integers between N and M, inclusive.
 ÆP     For each integer, yield 1 if it is prime, 0 otherwise.
   E    Yield 1 if all items are equal (none in the range were prime,
        or there's only one item).

之所以有用,是因为两个数字具有不同的素数簇,前提是它们之间有一个素数,或者两个数本身都是素数。除非两个数字相同,否则无论如何都会E返回1(单项数组中的所有项都相等)。


7
您的程序源看起来不友好...
Stan Strum,

2

Perl 6,52个字节

{[eqv] @_».&{(($_...0),$_..*)».first(*.is-prime)}}

测试一下

展开:

{  # bare block lambda with implicit slurpy input 「@_」

  [eqv]               # see if each sub list is equivalent

    @_».&{            # for each value in the input

      (

        ( $_ ... 0 ), # decreasing Seq
          $_ ..  *    # Range

      )».first(*.is-prime) # find the first prime from both the Seq and Range

    }
}


2

红宝石57 54字节

->n,m{[*n..m,*m..n].all?{|x|?1*x=~/^(11+)\1+$/}||n==m}

在线尝试!

我的答案(直到我单击它之前就忘记了)到相关问题使用可怕的正则表达式素数测试,这个数字是素数吗?。由于我们有N,M≥3,因此可以从模式中删除对1的检查,从而使字节数少于使用内置计数的字节数。

注意:正则表达式素数测试在病理学上效率低下。我相信至少是O(n!),尽管我现在没有时间弄清楚它。我花了十二秒钟检查了100,001,然后在取消1,000,001上磨了五到十分钟。使用/滥用后果自负。


1
以这样的速度有可能。您知道,100001! = 2824257650254427477772164512240315763832679701040485762827423875723843380680572028502730496931545301922349718873479336571104510933085749261906300669827923360329777024436472705878118321875571799283167659071802605510878659379955675120386166847407407122463765792082065493877636247683663198828626954833262077780844919163487776145463353109634071852657157707925315037717734498612061347682956332369235999129371094504360348686870713719732258380465223614176068 ... (Warning: The output exceeded 128 KiB and was truncated.)这将需要一千年的时间。
user202729 '11

2

视网膜 58字节

\b(.+)¶\1\b

.+
$*
O`
+`\b(1+)¶11\1
$1¶1$&
A`^(11+)\1+$
^$

在线尝试!说明:

\b(.+)¶\1\b

如果两个输入都相同,则只需删除所有内容,最后进入输出1。

.+
$*

转换为一元。

O`

排序。

+`\b(1+)¶11\1
$1¶1$&

扩展到所有数字的范围。

A`^(11+)\1+$

删除所有复合数字。

^$

如果没有数字,则输出1,否则输出0。


2

PARI / GP,28个字节

v->s=Set(v);#s<2||!primes(s)

在线尝试所有测试用例!

退货01(通常为PARI / GP“布尔”值)。

说明:

v必须是具有两个数字NM作为坐标的向量(或列向量或列表)。例如[8, 10]。然后s将是由这些数字组成的“集合”,它可以是一个单坐标矢量(if N==M),或者是一个带有已排序条目的二坐标矢量。

然后,如果输入#s的坐标数s仅为1,则得出1(真实)。否则,primes将返回从s[1]到的闭合间隔中所有素数的向量s[2]。否定!的,这将使1如果向量是空的,而一个或多个非零项(这里的一个或多个素数)的矢量的否定会给0


2

JavaScript(ES6),57 56字节

以currying语法接受输入(a)(b)。返回01

a=>b=>a==b|!(g=k=>a%--k?g(k):k<2||a-b&&g(a+=a<b||-1))(a)

测试用例

怎么样?

a => b =>                 // given a and b
  a == b |                // if a equals b, force success right away
  !(g = k =>              // g = recursive function taking k
    a % --k ?             //   decrement k; if k doesn't divide a:
      g(k)                //     recursive calls until it does
    :                     //   else:
      k < 2 ||            //     if k = 1: a is prime -> return true (failure)
      a - b &&            //     if a equals b: neither the original input integers nor
                          //     any integer between them are prime -> return 0 (success)
      g(a += a < b || -1) //     else: recursive call with a moving towards b
  )(a)                    // initial call to g()

2

R63 46字节

朱塞佩-17

function(a,b)!sd(range(numbers::isPrime(a:b)))

在线尝试!

ETHProductions的Jelly解决方案非常简单的应用。主要的有趣之是R布尔向量any(x)==all(x)等于min(x)==max(x)



此外,由于min(x)==max(x)相当于检查中的所有元素is_prime(a:b)都是平等的,我们可以利用这最后的绝招把它降低到46个字节与任一primesnumbers包。
朱塞佩

2

C(gcc), 153146字节

i,B;n(j){for(B=i=2;i<j;)B*=j%i++>0;return!B;}
#define g(l,m,o)for(l=o;n(--l););for(m=o;n(++m););
a;b;c;d;h(e,f){g(a,b,e)g(c,d,f)return!(a-c|b-d);}

乔纳森·弗雷奇(Jonathan Frech)的-7

定义一个h接受两个的函数int s并返回1true和0false

在线尝试!

n 是一个函数,如果其参数不是素数则返回1。

g 是一个宏,将第一个和第二个参数设置为小于和大于(分别)第三个参数的下一个质数

h 确实 g对于两个输入并检查是否输出是相同的。


return a==c&&b==d;可以return!(a-c|b-d);
乔纳森·弗雷希


@JonathanFrech修复了TIO链接。
pizzapant184 '17


1

APL(Dyalog Unicode)18 + 16 = 34 24字节

CY'dfns'
∧/=/4 ¯4∘.pco

在线尝试!

感谢Adám提供10个字节。

线⎕CY'dfns'C ^ OP Ý)需要导入DFN和d ynamic ˚F unctio 纳秒)收集,包含默认Dyalog APL安装。

怎么运行的:

∧/=/4 ¯4∘.pco  Main function. This is a tradfn body.
               The 'quad' takes the input (in this case, 2 integers separated by a comma.
          pco   The 'p-colon' function, based on p: in J. Used to work with primes.
    4 ¯4∘.      Applies 4pco (first prime greater than) and ¯4pco (first prime smaller than) to each argument.
  =/            Compares the two items on each row
∧/              Applies the logical AND between the results.
                This yields 1 iff the prime clusters are equal.




0

Mathematica,39 27 26字节

Equal@@#~NextPrime~{-1,1}&

展开:

                         &  # pure function, takes 2-member list as input
       #~NextPrime~{-1,1}   # infix version of NextPrime[#,{-1,1}], which
                            # finds the upper and lower bounds of each
                              argument's prime clusters
Equal@@                     # are those bounds pairs equal?

用法:

Equal@@#~NextPrime~{-1,1}& [{8, 10}]
(*  True  *)

Equal@@#~NextPrime~{-1,1}& [{6, 8}]
(*  False  *)

Equal@@#~NextPrime~{-1,1}& /@ {{8, 10}, {20, 22}, {65, 65}, 
    {73, 73}, {86, 84}, {326, 318}, {513, 518}}
(*  {True, True, True, True, True, True, True}  *)

Equal@@#~NextPrime~{-1,1}& /@ {{4, 5}, {6, 8}, {409, 401}, 
    {348, 347}, {419, 418}, {311, 313}}
(*  {False, False, False, False, False, False}  *)

贡献:Jenny_mathy -12个字节,Martin Ender -1个字节


这仅检查下一个素数。试试NextPrime [#,{-1,1}]
J42161217 '17

@Jenny_mathy:我看你是正确的。被“ 348,347”测试用例抓住了,现在证明可以通过。
艾瑞克大厦

27个字节:Equal@@NextPrime[#,{-1,1}]&作为输入,[{N,M}]或者如果您想保留原始输入,请使用以下30个字节:Equal@@NextPrime[{##},{-1,1}]&
J42161217

@Jenny_mathy:好吧,...,指定的输入是两个整数,而不是一个列表,所以……
Eric Towers

1
@EricTowers 列出列表很好。另外,您可以使用infix表示法保存一个字节#~NextPrime~{-1,1}
Martin Ender

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.