Проверка, является ли возвращенное число целым числом в GP/Pari?

Я впервые использую GP/Pari, и у меня возникли проблемы с ответом на этот вопрос.

Меня просят напечатать, является ли возврат функции 'wq()' целым числом. Есть ли функция, которая может определить, является ли переданное число целым числом? Если нет, то как мне проверить? Я нахожу синтаксис несколько сложным и не могу найти много информации о нем в Интернете.

Я включил то, что у меня есть до сих пор, любая помощь приветствуется.

wq(x) =
{
    [(x-1)! + 1]/x
}

test(r,s) =
{
    for (i=r, s, if(isinteger(wq(i)), print("integer"), print("not interger")));
}

person Michael Arciola    schedule 25.04.2016    source источник
comment
Пару дней назад был задан очень близкий вопрос: Как проверить, является ли число целым числом в Pari/GP?   -  person Jeppe Stig Nielsen    schedule 29.04.2016


Ответы (2)


Если я правильно понимаю, вы хотите проверить, кратно ли (x-1)! + 1 x. Вы можете сделать это с помощью операции по модулю:

test(r,s) =
{
    for (i=r, s, if(Mod((i - 1)! + 1, i) == 0, 
         print("integer"), 
         print("not integer")));
}
person Community    schedule 25.04.2016
comment
Спасибо за вашу помощь! Мне интересно, как я смогу сделать это, используя мою функцию wq(), которую я определил. Часть проблемы, которую я пытаюсь решить, также заключается в том, чтобы научиться использовать и вызывать пользовательские функции. Я пытался вызвать wq() внутри мода, но продолжал получать сообщение об ошибке. - person Michael Arciola; 25.04.2016

Вы можете использовать:

wq(x) =
{
    ((x-1)! + 1)/x
}

test(r,s) =
{
    for (i=r, s, print(if(type(wq(i))=="t_INT", "integer", "not integer")))
}

Я изменил [] на (), поскольку [] дает вектор-строку (тип t_VEC), который здесь бесполезен.

Вот еще один способ написать это:

wq(x) =
{
    Mod((x-1)! + 1, x)
}

test(r,s) =
{
    for (i=r, s, wq(i) && print1("not "); print("integer"))
}

Функция print1 печатает и "остается" на той же строке. Оператор «и» && "короткое замыкание". Точка с запятой ; связывает несколько выражений в одну "последовательность".

person Jeppe Stig Nielsen    schedule 28.04.2016