连续素数的产品


11

提交到沙箱时,我的信誉为17017,你们都可以将其素为7×11×13×17,这是四个连续素数的乘积。

请编写一个函数或程序以输出两个或多个连续素数的所有乘积,直到一个输入整数n。例如,给定n=143您应该输出6, 15, 30, 35, 77, 105, 143(或等效的输出格式)。

对I / O和漏洞的一般限制适用。

这是,因此最短的程序为准。



2
是否应该对输出进行排序?
Fatalize

@Fatalize我本来是要对其进行排序的,但是我发现我对它的指定不够好,并且已经有一些答案未输出排序列表。
尼尔

Answers:


6

果冻14 10 字节

(毫无疑问,这里可以打高尔夫球!-是的...)-4
个字节,感谢@Dennis-通过使用范围替换大于n的检查

ÆRẆP€ḟÆRfR

注意-这既效率极低而且结果未排序。

TryItOnline上进行测试

怎么样?

ÆRẆP€ḟÆRfR - main link takes an argument, n
ÆR    ÆR   - primes up to n
  Ẇ        - all sublists
   P€      - product for each
     ḟ     - filter out the primes (since the sublists include those of lnegth 1)
        fR - filter out any not in range [1,N]
             (yep, it's calculating all products of primes up to n - gross)

2
你不需要µ³; >Ðḟ本身就可以正常工作。fR更短。
丹尼斯

@Dennis-我在等你的上乘方法。谢谢!
乔纳森·艾伦

4

MATL25 20字节

Zq&Xf"@gnq?2MpG>~?6M

方法类似于乔纳森·艾伦(Jonathan Allan)的回答

在线尝试!


旧版本,25个字节

:YF!"@2<@sq0@0hhdz2=v?X@D

这将获得从1到输入的所有数字的素因分解指数。对于每个它检查:

  1. 如果所有指数均小于2。
  2. 如果所有指数的总和大于1。
  3. 指数数组在每个末端扩展为零。计算扩展数组的连续差。应该恰好有2个非零差异。

如果满足这三个条件,则会显示数字。结果按升序排列。


4

使用Javascript(ES6),105个 104字节

n=>{for(i=1,P=[];i++<n;P[P.every(v=>i%v)?i:n]=i);P.map(i=>P.map(j=>j>i&&(p*=j)<=n&&console.log(p),p=i))}

演示版

var f =
n=>{for(i=1,P=[];i++<n;P[P.every(v=>i%v)?i:n]=i);P.map(i=>P.map(j=>j>i&&(p*=j)<=n&&console.log(p),p=i))}

f(143)


2

05AB1E17 15 字节

L<ØŒ€PD¹>‹ÏDp_Ï

说明

L<Ø                 # get the first N primes, where N is the input
   Œ                # get all combinations of consecutive primes
    €P              # calculate the product of these sublists
      D¹>‹Ï         # keep only the products less than or equal to N
           Dp_Ï     # keep only those that aren't prime

在线尝试!


1

Pyth,18个字节

f}PTftlY.:fP_YSQ)S

一个程序,该程序在STDIN上输入整数并输出整数列表。

在线尝试

这个怎么运作

f}PTftlY.:fP_YSQ)S  Program. Input: Q
              SQ    Yield [1, 2, 3, ..., Q]
          fP_Y      Filter that by primality
        .:      )   Yield all sublists of that
    f               Filter the sublists by:
      lY             Length
     t               -1
                    removing sublists of length 1
f                S  Filter [1, 2, 3, ..., Q] (implicit input fill) by:
  PT                 Prime factorisation
 }                   is in the sublists
                    Implicitly print

1

果冻,11 字节

ÆfÆCI=1Ȧµ€T

这不是最简单的Jelly答案,但是这种方法非常有效,并且可以对输出进行排序。

在线尝试!

这个怎么运作

ÆfÆCI=1Ȧµ€T  Main link. Argument: n

        µ€   Map the preceding chain over each k in [1, ..., n].
Æf             Compute all prime factors of k, with multiplicities.
  ÆC           Count the number of primes less than or equal to each prime factor.
               This maps the j-th to j.
    I          Increments; compute the forward differences of consecutive indices.
     =1        Compare each difference with 1.
       Ȧ       All; return 1 iff the array is non-empty and has no zeroes.
          T  Truth; yield all indices for which the chain returned 1.
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.