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

时间:2017-02-19 07:50:58

标签: primes pari pari-gp

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

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

1 个答案:

答案 0 :(得分:0)

你的if语句每个都有两个测试,所以如果p为素数,则两者都为真(第一个是isprime(p)OR 1,第二个是isprime(p)或0)。我想你想要的东西:

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

这里我们使用if-then-else形式的Pari / GP's if,所以如果isprime(p)为真,我们会做第一项,如果是假则我们做第二项。这也有一个优势,就是只调用isprime一次,这对于你的数字很大很重要(人们也可以讨论ispseudoprimeisprime,但64位输入没有区别)。