Как проверить, является ли число целым числом в пари /GP?
Я пытаюсь написать заявление if, как это
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
это целое число или нет, знаменатель, это то, что я придумал, я также попробовал мод, но тоже не смог заставить его работать.
3 ответа
Похоже, вас смущают имена x
а также i
, Пожалуйста, обратите внимание, что приведенное ниже выражение работает правильно:
i = 10;
print([(i-1)! + 1] / i);
gp > [362881/10]
Вы можете использовать:
print(if(((i-1)! + 1) % i, "hi", "ho"))
Если i
(в вашем вопросе x
) не является целым числом, вы получаете сообщение об ошибке !
(факториал) оператор (но см. gamma
также).
Не использовать []
здесь он создает вектор.
Оператор %
который я использовал, дает остаток. Например 11 % 4
дает целое число 3
, В сравнении Mod(11, 4)
не является обычным целым числом, это член кольца Z/4Z (целые числа по модулю 4). Это очень полезно во многих случаях.
Я предполагал, что вы хотите записать строки, поэтому я использовал кавычки "
, Если hi и ho - переменные, конечно, опустите кавычки.
Я не уверен, что это была за ошибка, но я использовал функцию пола для определения, было ли это целое число или нет.