不同的质因数

作者:Gerhard R

https://projecteuler.net/problem=47

前两个具有两个不同质因数的连续数是

14 = 2 × 7 15 = 3 × 5

前三个具有三个不同质因数的连续数是

644 = 2² × 7 × 23 645 = 3 × 5 × 43 646 = 2 × 17 × 19.

找出前四个具有四个不同质因数的连续整数。第一个这样的数字是多少?

要运行此示例,需要将关联的 C 文件 (prob047-gerdr.c) 编译到共享对象库中。

在 GCC 中,可以通过以下方式实现

$ gcc --std=c99 -fPIC -c -o prob047-gerdr.o prob047-gerdr.c
$ gcc -shared -o prob047-gerdr.so prob047-gerdr.o

之后,就可以按预期运行该示例

$ perl6 prob047-gerdr.pl

源代码:prob047-gerdr.pl

use v6;

use NativeCall;

sub factors(int32 $n) returns int32 is native($*SPEC.catdir($*PROGRAM-NAME.IO.dirname, 'prob047-gerdr')) { * }

sub MAIN(Int $N = 4) {
    my int $n = 2;
    my int $i = 0;

    while $i != $N {
        $i = factors($n) == $N ?? $i + 1 !! 0;
        $n = $n + 1;
    }

    say $n - $N;
}