Pari GP - 检查用户是否输入了质数

Pari GP - Checking if user keyed in a prime number

我目前正在学习如何使用 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" 行通过识别它不是质数来工作,但是当我键入质数时,两条行都出现了。

如果有人能提供帮助,我们将不胜感激。

你的 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 位输入没有区别,这一点很重要).