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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
iUltramarine
Сообщений: n/a
#1

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

03.12.2010, 17:57. Просмотров 737. Ответов 2
Метки нет (Все метки)

Не могу разобраться с задачей.
Собственно условие такое - нужно вывести все простые числа не превышающие N но в которых нету повторяющихся чисел , тоесть числа 11,113 не подойдут.
Проблема возникла с определением одинаковых цифр в числе.Я хотел организовать чтобы единицы десятки сотни и т.д. записывались в массив x[y] и если бы в массиве были одинаковые числа то , это число бы не выводилось.
В данной программе массив выводит чушь какую-то(скорее всего выходят за границу значения),алгоритм сравнения еще не писал с массивом бы разобраться.
Подскажите еще алгоритм нахождения одинаковых чисел в массиве.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream.h>
void main()
{double x[7];
int i,j,N,b,y,k;
cout<<endl<<"Введите N ";
cin>>N;
y=1;
for(i=3;i<=N;i++)
 {b=1;
   for (j=2;j<i;i++)
    if ((i%j)==0) b=0;
     if (b==1) { for (k=i;k>0;k=k/10)
                            {k=x[y];
                             y=y+1;}
for (y=1;y<=7;y++)
cout<<x[y]<<" ";    
}
}
}
прошу прощения за кривые предложения .
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2010, 17:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нахождение и запись в массив простых чисел с повторяющимися цифрами (C++):

Надо ускорить алгоритм вычисления чисел с не повторяющимися цифрами - C++
Помогите ускорить алгоритм. Надо определить все числа с не повторяющимися цифрами от 0 до 9876543210. У меня время просчета занимает очень...

Нахождение простых чисел в С++ - C++
Уважаемые форумчане, помогите пожалуйста сделать прогу работающей: #include&lt;iostream&gt; using namespace std; int main(){ int N,...

Нахождение простых чисел.( - C++
Люди я все понимаю, этот вопрос наверное покажется глупым, точнее он таковым и является. Программа нахождения простых чисел cin &gt;&gt;...

Нахождение простых чисел - C++
Доброго времени суток. Помогите в написании программы,которая бы находила простые числа в пределах от 2 до 100. Зараннее благодарен.

Рекурсивное нахождение простых чисел - C++
Дано число Х, определить количество простых чисел меньших Х. С использованием рекурсивных методов. Задача пустяковая, учу С#, а задание...

Нахождение парных простых чисел с++ - C++
Дорогие форумчане прошу помощи. Парные простые числа.парными простыми числами называют два простых числа, разность которых равна...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
03.12.2010, 20:12 #2
Не могу разобраться с задачей.
Собственно условие такое - нужно вывести все простые числа не превышающие 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;
 
}
iUltramarine
Сообщений: n/a
04.12.2010, 10:01 #3
спасибо за решение,попытаюсь разобрать его=)оно довольно сложно для первого курса

Добавлено через 46 минут
Боюсь что решение которое мне предложили не подойдёт , не могли бы указать на ошибку в моей программе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2010, 10:01
Привет! Вот еще темы с ответами:

Нахождение простых чисел на промежутке - C++
Приветствую всех. Поиском пользовался.. т.к. только начинаю изучать с++ не могу найти ответ подскажите пожалуйста, как оптимизировать...

Нахождение простых чисел на отрезке [m;n] - C++
INPUT.TXT содержит два натуральных числа M и N, разделенных пробелом (2 ≤ M ≤ N ≤ 106). В выходной файл OUTPUT.TXT выведите все простые...

Нахождение простых чисел в массиве - C++
Ввести 20 чесел в массив и найти среди них все простые числа Пожалйста помогите :( Буду оч благодарна

Нахождение простых чисел в интервале от 1 до 100 - C++
Приветствую. Мне нужно найти все простые числа от 1 до 100. Вот мой &quot;каркас&quot;: #include &lt;iostream&gt; using namespace std; int main() {...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru