Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 23.11.2019
Сообщений: 3
1

Найти наибольшее число палиндром, которое образуется путем умножения двух простых пятизначных чисел

23.11.2019, 22:26. Показов 1174. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Напишіть програму, яка знаходить найбільше число паліндром, яке
утворюється шляхом множення двох простих п'ятизначних чисел.
Програма має вивести на екран саме число паліндром та два співмножники.

 Комментарий модератора 
Напишите программу, которая находит наибольшее число палиндром, которое
образуется путем умножения двух простых пятизначных чисел.
Программа должна вывести на экран именно число палиндром и два сомножителя.


Добавлено через 2 часа 11 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
 
using namespace std;
int revers(long long int prov)
{
    unsigned int m;
 
    m = 0;
    while (prov > 0) {
        m = m * 10 + prov % 10;
        prov = prov / 10;
        cout << m << endl;
    }
    return m;
}
int main()
{
 
    int max = 99999;
    int count = 0;
 
    long long int mas[33857]{};
 
    bool isprime;
 
    for (int i = 10000; i < max; i++)
    {
        isprime = true;
        for (int j = 10001; j <= i / 2; j++)
            if ((i % j) == 0)
                isprime = false;
        if (isprime)
        {
            mas[count] = i;
            count++;
 
        }
 
    }
    int prov;
    int prov_revers;
    int n;
    for (int i = 33855; i > 0; i--)
    {
        for (int j = 33855; j < le ngth; i++)
        {
 
 
            prov = mas[i] * mas[i + 1];
 
            if (prov == revers(prov))
            {
                cout << "mas[i] " << mas[i] << " * mas[i + 1] " << mas[i + 1] << " = " << mas[i] * mas[i + 1] << endl;
            }
 
        }
 
    }
    cout << count << " " << endl;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2019, 22:26
Ответы с готовыми решениями:

Получить новое число M, которое образуется из числа N путем замены последней цифры
Дано натуральное число N. Получить новое число M, которое образуется из числа N путем замены...

Получить новое число, которое образуется из исходного путем замены последней цифры
помогите Плиз Дано натуральное число N. Получить новое число M, которое образуется из числа N...

Получить новое число, которое образуется путем исключения средней цифры исходного числа
Здравствуйте, помогите написать программу на Delphi и с формой. Задание: Дано натуральное число...

Получить новое число, которое образуется путем исключения средней цифры исходного числа
Дано натуральное число N. Если число содержит 5 цифр, то получить новое число М, которое образуется...

5
2494 / 1095 / 489
Регистрация: 17.11.2018
Сообщений: 2,784
23.11.2019, 22:34 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
bool isPrime( int n )
{
    for( int i = 2; i * i <= n; i++ )
        if( n % i == 0 )
            return false;
 
    return true;
}
 
bool isPalindrome( unsigned long long num )
{
    unsigned long long tmp = num;
    unsigned long long pal = tmp % 10;
 
    while( tmp /= 10 )
        pal = pal * 10 + tmp % 10;
 
    return ( pal == num );
}
 
int main()
{
    int i, j;
 
    for( i = 99999; i > 9999; i -= 2 )
        if( isPrime( i ) )
            for( j = 99999; j > 9999; j -= 2 )
                if( isPrime( j ) && isPalindrome( i * j ) )
                    goto finish;
finish:
    cout << i << " * " << j << " = " << i * j << endl;
    return 0;
}
0
1 / 1 / 0
Регистрация: 23.11.2019
Сообщений: 3
23.11.2019, 22:59  [ТС] 3
если умножить на калькуляторе то будет другой ответ
0
2494 / 1095 / 489
Регистрация: 17.11.2018
Сообщений: 2,784
23.11.2019, 23:08 4
так попробуй:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    unsigned long long i, j;
 
    for( i = 99999; i > 9999; i -= 2 )
        if( isPrime( i ) )
            for( j = i; j > 9999; j -= 2 )
                if( isPrime( j ) && isPalindrome( i * j ) )
                    goto finish;
finish:
    cout << i << " * " << j << " = " << i * j << endl;
    return 0;
}
1
1 / 1 / 0
Регистрация: 23.11.2019
Сообщений: 3
23.11.2019, 23:41  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
using namespace std;
 
int turn(long long int num){
    long long int rev = 0;
    while (num > 0){
        rev = rev * 10 + num % 10;
        num = num / 10;}
    return rev;}
int main()
{
    int max = 99999;
    int count = 0;
    long long int mas[8363]{ 0 };
    bool isprime;
    cout << "one second" << endl;
    for (int i = 10000; i < max; i++){
        isprime = true;
        for (int j = 2; j <= sqrt(i); j++)
            if ((i % j) == 0)
                isprime = false;
        if (isprime){
            mas[count] = i;
            count++;}
    }   
    long  long int num;
    long  long int max_num = 0;
    int i_max = 0, j_max = 0;
    for (int i = 0; i < count; i++){
        for (int j = 0; j < count; j++){
            num = mas[i] * mas[j];
            if (num == turn(num)){
                if (num > max_num){
                    max_num = num;
                    i_max = i;
                    j_max = j;}
            }
        }
 
    }
    cout << mas[i_max] << " * " << mas[j_max] << " = " << max_num << endl;
    return 0;
}
1
2494 / 1095 / 489
Регистрация: 17.11.2018
Сообщений: 2,784
24.11.2019, 02:16 6
Да, нужно добавить поиск максимального числа...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main()
{
    unsigned long long i, j, res, ii, jj, max = 0;
 
    for( i = 99999; i > 9999; i -= 2 )
        if( isPrime( i ) )
            for( j = 99999; j > 9999; j -= 2 )
            {
                res = i * j;
                if( isPrime( j ) && isPalindrome( res ) && res > max )
                {
                    max = res; ii = i; jj = j;
                }
            }
    cout << ii << " * " << jj << " = " << max << endl;
    return 0;
}
0
24.11.2019, 02:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.11.2019, 02:16
Помогаю со студенческими работами здесь

Получить новое число M, которое образуется путем исключения средней цифры исходного числа
Весь код с функцией getch() пожалуйста

Найти число, которое которое образуется из данного числа при записи его цифр в обратном порядке
Составить программу для нахождения числа, которое которое образуется из данного натурального числа...

Получить число М, которое образуется из числа N путем замены последней цифры на значение наибольшей цифры
Помогите составить программу, пожалуйста! Вот условие: Дано натуральное число N. Получить новое...

Получить новое число М, которое образуется из числа N путем замены последней цифры на значение наименьшей цифры
Дано натуральное число N. Получить новое число М, которое образуется из числа N путем замены...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru