changed data type from int to long long in task 4

This commit is contained in:
2024-11-02 16:03:51 +03:00
parent 823f84cf63
commit 3d2d16edb3
2 changed files with 13 additions and 9 deletions

View File

@@ -117,21 +117,22 @@ int main() {
Написать программу для проверки на простоту числа Мерсенна с использование теста Люка-Лемера. С клавиатуры вводится номер числа Мерсенна
```cpp
#include <iostream>
#include <cmath>
// Функция для проверки, является ли число простым
bool isPrime(int p) {
bool isPrime(long long p) {
if (p <= 1) return false;
if (p <= 3) return true;
if (p % 2 == 0 || p % 3 == 0) return false;
for (int i = 5; i * i <= p; i += 6) {
for (long long i = 5; i * i <= p; i += 6) {
if (p % i == 0 || p % (i + 2) == 0) return false;
}
return true;
}
// Тест Люка-Лемера для проверки простоты числа Мерсенна
bool lucasLehmerTest(int p) {
bool lucasLehmerTest(long long p) {
if (p == 2) return true; // M_2 = 3, простое число
// Вычисляем M_p = 2^p - 1
@@ -141,7 +142,7 @@ bool lucasLehmerTest(int p) {
long long s = 4;
// Выполняем тест
for (int i = 3; i <= p; ++i) {
for (long long i = 3; i <= p; ++i) {
s = (s * s - 2) % M_p; // s = s^2 - 2
}