0

我目前正在学习如何使用 Pari GP,现在我正在尝试编写一个代码来检查用户是否输入了质数。

这是我的代码。

printf("\t%s \n","PrimeNo(P): To check if it is a prime or not");

PrimeNo(p)={

if(isprime(p)||1, print("Prime numbers only"));

if(isprime(p)||0, print("Prime numbers stored"));

print(p);

}

问题是我的第一条“if”行通过识别它不是质数来工作,但是当我输入质数时,两条线都出现了。

如果有人可以提供帮助,将不胜感激。

4

1 回答 1

0

您的 if 语句每个都有两个测试,因此如果p是素数,两者都是正确的(第一个 if isprime(p) OR 1,第二个 if isprime(p) OR 0)。我想你想要这样的东西:

PrimeNo(p) = { if( isprime(p), print("Yep"), print("Nope") ); print(p); }

这里我们使用 Pari/GP 的 if 的 if-then-else 形式,所以如果 isprime(p) 为真,则执行第一项,如果为假,则执行第二项。这还具有只调用isprime一次的优点,如果您的数字很大,这一点很重要(也可以讨论ispseudoprimeisprime但 64 位输入没有区别)。

于 2017-02-19T15:57:15.367 回答