Форум программистов, компьютерный форум CyberForum.ru

Нахождение и запись в массив простых чисел с повторяющимися цифрами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ структуры http://www.cyberforum.ru/cpp-beginners/thread202716.html
Определите структуру, задающую информацию о авиарейсе: № рейса, направление, время вылета, время прибытия, тип самолета. Введите данные в эту структуру, после чего выведите их на экран.
C++ stroki Дана строка s, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв. Между соседними словами стоит запятая, за последним словом - точка. Напечатать все слова в алфавитном порядке http://www.cyberforum.ru/cpp-beginners/thread202714.html
Преобразовать многочлен к нормальному виду C++
Приведение подобных. Многочлен произвольного вида с одним неизвестным задан символьной строкой. Неизвестное выражение представлено одной буквой, операция возведения в степень обозначается "^". Преобразовать многочлен к нормальному виду, приведя подобные члены и определив его массивом коэффициентов. Если подобных членов не окажется, вывести соответствующее сообщение.
C++ Задание по С.
Написать функцию нахождения в массиве целых чисел наименьшего по абсолютной величине числа.
C++ Найти количество секунд, прошедших со времени, когда часы в последний раз показали 12 http://www.cyberforum.ru/cpp-beginners/thread202693.html
Напишите функцию, которая воспринимает время как три целых аргумента (часы, минуты и секунды) и возвращает количество секунд, прошедших со времени, когда часы в последний раз показали12. Используйте эту функцию для вычисления интервала времени в секундах между двумя моментами, находящимися внутри двенадцатичасового цикла.
C++ одномерный массив помогите пожалуйста с задачей) ввести массив чисел с задаваемым количеством. найти и вывести номер вводимого числа, атакже значение разности между самим числом и текущим средним, для которого это значение разности максимально по модулю. 1 3 5 3 -2 ответ: 4 -2 -4 подробнее

Показать сообщение отдельно
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
03.12.2010, 20:12
Не могу разобраться с задачей.
Собственно условие такое - нужно вывести все простые числа не превышающие N но в которых нету повторяющихся чисел , тоесть числа 11,113 не подойдут.
Доброго времени суток,
Обратите внимание, что в условии нет требования использовать массив. Учитывая, что фактически N не может быть больше 10^9 (иначе в нём обязательно встретятся две одинаковые цифры), то можно (а скорее всего и оптимально) решить полным перебором чисел от 1 до N с проверкой на простоту и на "повторяемость" цифр на лету. При этом для определения повторяемости нет никакой необходимости использовать массив.

--------------------------------------



решение
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
#include<iostream>
bool is_simple(int x);      // Вернёт истину, если х простое.
bool is_different(int x);   // Вернёт истину, если х состоит из различных цифр.
 
int main(void){
 
    int n;
    std::cin>>n;            //подразумеваем, что значение N корректно.
 
    for (int x = 1; x<=n; x++)
        if(is_simple(x)&&is_different(x)) 
            std::cout<<x<<std::endl;
 
 
return 0;
}
 
 
 
// собственно функции:
bool is_different(int x){
        
    while(x!=0){
        int tmp = x;
        int r = tmp%10;
        
        
        while(tmp != 0){
            tmp = (tmp - tmp%10)/10;
            if(tmp%10 == r) return false;
        }
        
        
        x = (x - x%10 )/10;
    }   
    
    return true;
 
}
 
bool is_simple(int x){
 
    if(x == 1) return true;
 
    for(int i=2; i*i <= x; i++)
        if (x%i == 0) return false;
    
    return true;
 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru