Как проверить делимость очень длинного числа в C++?

Как проверить делимость очень длинного числа в с ++? Я должен проверить, делится ли (3*n*n+3*n-1) на 2, 3 и 5, и n может быть до 10^10, так что long long int также сомнительно работает, хотя я пытался сделать это:

unsigned long long int gg4,l;
gg4=(3*n*n+3*n-1);
if(gg4%3==0){
    gg4=gg4/3;
}
if(gg4%2==0){
    gg4=gg4/2;
}
if(gg4%5==0){
    gg4=gg4/2;
}

Но я думаю, что это не будет работать из-за диапазона п, поэтому, пожалуйста, помогите!:)

после этого мне также нужно разделить (3*n*n+3*n-1) на этот коэффициент, поэтому, пожалуйста, помогите!

1 ответ

Чтобы расширить мой комментарий, есть два случая, когда (3*n*n+3*n-1) % 5 == 0а именно

  • n = 5 * m + 1
  • n = 5 * m + 3

За m целое число

Так что на самом деле вам не нужно ничего рассчитывать, вы можете работать напрямую с nи даже не рассчитать 3 * n * n + 3 * n - 1 на первом месте.

Просто проверьте:

n % 5 == 1 || n % 5 == 3
Другие вопросы по тегам