Решение задачи Снова про простые числа с Acmp

Без пояснения   Просмотров: 33


Найдите простое число из отрезка [a, b] с максимальной суммой цифр. Если таких чисел несколько, выберите из них максимальное.

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

Код

#include <iostream>
#include <cmath>
using namespace std;
 
bool isPrime(unsigned long a)
{
    bool t = true;
    for(unsigned long i = 2; i <= sqrt(a); ++i)
        if(!(a % i)) {
            t = false; break;
        }
    return t;
}
 
int main()
{
    unsigned long m,n;
    bool b = false;
    int s = 0, s1 = 0,k = 0,d = 0;
    cin >> m >> n;
    for(unsigned long i = m; i <= n; ++i){
        if(isPrime(i)){
                d = i;
            while(d){
                s+=d % 10;
                d/=10;
            }
            if(s >= s1){
                k = i;
                s1 = s;
            }
            s = 0;
            b = true;
        }
    }
    if(k == 1){
        cout << -1;
        return 0;
        }
    if(b)
        cout << k;
    else
        cout << -1;
    return 0;
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться