2016-04-22 2 views
0

Я пытаюсь написать, если заявление, как этотКак проверить, является ли число целым числом в Pari/GP?

if(denominator([(i-1)! + 1]/i)-1,print(hi),print(ho)) 

i может быть любым целым числом, например, 10, когда я установил i в 10 он дает эту ошибку.

? [(x-1)! + 1]/x 
    *** this should be an integer: [(x-1)!+1]/x 
            ^----------- 

Я действительно только нужно проверить, если [(x-1)! + 1]/x целое или не знаменатель то, что я придумал, я также попытался Mod но не мог получить, что работать либо.

ответ

2

Кажется, что вы смущены именами x и i. Пожалуйста, смотрите, что ниже выражение работает правильно:

i = 10; 
print([(i-1)! + 1]/i); 
gp > [362881/10] 
0

Я не уверен, что была ошибка, но я в конечном итоге, используя функцию пола для определения, был ли это число или нет.

0

Вы могли бы использовать:

print(if(((i-1)! + 1) % i, "hi", "ho")) 

Если i (в вашем вопросе x) не является целым числом, то вы получите сообщение об ошибке из (факторного) оператора ! (но см gamma, а).

Не используйте [] здесь, он создает vector.

Оператор %, который я использовал, дает остаток. Например, 11 % 4 дает целое число 3. В сравнении Mod(11, 4) не является обычным целым числом, он является членом кольца Z/4Z (целые числа по модулю 4). Это очень полезно во многих случаях.

Я предположил, что вы хотите написать строки, поэтому я использовал цитаты ". Если hi и ho - переменные, оставьте, конечно, кавычки.

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