2

如果n是一个大于 2 且满足modp(2^n-1,n)=1n不是素数的正整数,则n称为 2-伪素数。找出所有小于 2000 的 2-伪素数,对于每个伪素数,输出伪素数及其素数除数的集合。

这是我到目前为止所尝试的。顺便说一句,这是使用枫木。

for n from 2 to 2000 do
    n, mod(2^n-1,n) isprime(n);
od;

我不确定在这里还能做什么。

4

1 回答 1

0

您需要的是使用if...then...fi(或更现代的if...then...end if.)构造的条件语句

如果满足条件,则可以打印所需的结果。

for n from 2 to 2000 do
    if `mod`(2^n-1,n) = 1 and not( isprime(n) ) then
        print(n, map(expand,{op(ifactor(n))}));
    fi;
od;
于 2012-09-12T05:08:55.617 回答