2017-02-19 1 views
0

В настоящее время я изучаю, как использовать 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); 

} 

Проблема моя первая «если» линия работает путем определения, что это было не простое, но когда я ключ в простое число, обе линии появились.

Буду признателен, если кто-нибудь может помочь.

ответ

0

Ваши операторы if имеют по два теста каждый, поэтому оба являются истинными, если p является простым (первое, если isprime (p) ИЛИ 1, второе, если isprime (p) ИЛИ 0). Я думаю, что вы хотите что-то вроде:

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

Здесь мы используем если-то-еще форму Pari/ВОП, если, таким образом, мы делаем первый элемент, если IsPrime (р) верно и второй пункт, если это неверно. Это также имеет преимущество только при вызове isprime один раз, что важно, если ваши номера большие (можно также обсудить ispseudoprime против isprime, но нет разницы для 64-битных входов).

+0

DanaJ спасибо. Ты спасатель жизни. –

+1

@JamesQuek Вы также можете написать 'PrimeNo (p) = {print (if (isprime (p)," Yep "," Nope ")); print (p)} ', если вы предпочитаете. Все в PARI является функцией, в том числе 'if'. –

Смежные вопросы