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

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

Войти
Регистрация
Восстановить пароль
 
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
#1

Найти позиции всех простых чисел! - C++

24.01.2012, 23:33. Просмотров 910. Ответов 10
Метки нет (Все метки)

С клавиатуры вводится 20 простых чисел, найти позиции всех простых чисел!
C++
1
2
3
4
5
6
7
8
9
10
11
12
# include<iostream>
using namespace std;
int main()
{
int m[20],m1[20],vivod=0;
for(int i=0;i<20;i++){ cin >> m[i];
if (m[i]<3)
    for(int k=2; k<=m[i]/2;i++)
        if(m[i]%k==0) m1[vivod]=i;vivod++;}
for (int g=0;g<vivod;g++) cout <<m1[g];
    return 0;
}
сделал так ! скажите что не правельно??
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2012, 23:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти позиции всех простых чисел! (C++):

Найти количество всех простых чисел на отрезке - C++
Решите пожалуйста, завтра необходимо сдать. Задание: Разработка нерекурсивных функции. Разработать функцию, которая для заданного...

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

Найти сумму всех простых чисел в интервале от 0 до 1000000 - C++
Есть программка считающая сумму всех простых чисел от 0 до 1 млн. Но результат выдает не правильно. Если вместо млн уменьшаешь диапазон до...

Вывод всех простых чисел. - C++
Задали задачку. Вывести все простые числа от 1 до n Примерно сделал на паскале. До 100 все работает а дальше он не может ворочать...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
24.01.2012, 23:45 #2
Цитата Сообщение от beliall Посмотреть сообщение
скажите что не правельно??
Вообще каша. Зачем-то проверка на m[i] < 3, после которой цикл даже не запустится.
0
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
25.01.2012, 00:57  [ТС] #3
согласен m[i] < 3 не к чему сам не понял зачем написал! Но все таки как будет правильно!?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# include<iostream>
using namespace std;
int main()
{
int m[20],m1[20],vivod=0;
for(int i=0;i<20;i++){
    cin >> m[i];
    for(int k=2; k<=m[i]/2;i++)
        if(m[i]%k==0) 
                   m1[vivod]=i;
                    vivod++;}
for (int g=0;g<vivod;g++) 
    cout <<m1[g];
    return 0;
}
0
x1Mike7x
217 / 130 / 6
Регистрация: 06.11.2010
Сообщений: 234
25.01.2012, 02:05 #4
Что такое "позиция простого числа"?
Если это номер простого числа в последовательности простых чисел, то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int x;
for ( int i = 0; i < 20; ++i )
{
    std::cin >> x;
    int pos = 1, count = 1;
    for ( int a = 3; a <= x; a += 2 )
    {
        int prime = 1;
        for ( int z = 2; z * z <= a && prime; ++z )
            prime &= ( a % z != 0 );
        count += prime;
    }
    std::cout << count << std::endl;
}
http://ideone.com/3lI45
1
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
25.01.2012, 20:52  [ТС] #5
да! нужно что бы выводила порядковый номер простого числа!
Сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
# include<iostream>
using namespace std;
int main()
{
int vivod=0,m[10];
for(int i=0;i<10;i++){
    cin >> m[i];}
    for(int k=0; k<10;k++){
        for(int a=2; a<=m[k]/2;a++)
            if(m[k]%a==0) cout<<k;}
 
    return 0;
}
Номер вроде выводит но криво ! несколько раз его повторяет!

Добавлено через 53 минуты
подскажите кто знает как исправить???
0
Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
25.01.2012, 21:26 #6
Особо не проверял, но вот мой вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    int _Arr[10] = { 111, 123, 145, 141, 254, 112, 968, 881, 778, 991 };
 
    for (int i = 0, j; i < 10; i++)
    {
        for (j = 2; j < (_Arr[i] / 2); j++)
            if (_Arr[i] % j == 0)
                break;
 
        if (_Arr[i] % j != 0)
            cout << "Число: " << _Arr[i] 
                               << "\nПозиция: " << i+1 << endl << endl;
    }
 
    return 0;
}
p.s. Вывод сам добавь... Позицию выводит не с 0, а с 1. Если что - единичку подотри после "Позиция: ".
1
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
25.01.2012, 21:41  [ТС] #7
Нужно чтобы числа с клавиатуры вводились!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# include<iostream>
using namespace std;
int main()
{
int vivod=0,m[10];
for(int i=0;i<10;i++){
    cin >> m[i];}
    for(int k=0; k<10;k++){
        for(int a=2; a<(m[k]/2);a++)
            if(m[k]%a==0) 
                break;
    if(m[k]%a!=0)
    cout <<k++ ;}
 
    return 0;
}
Если так сделать то в месте if(m[k]%a!=0) пишет идентификатор не определен!
Если так сделать то
0
Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
25.01.2012, 21:49 #8
Пожалуйста... С клавиатуры

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
#include <iostream>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    int _Arr[10];
 
    cout << "Вводи числа..." << endl;
    for (int i = 0; i < 10; i++)
         cin >> _Arr[i];
 
    for (int i = 0, j; i < 10; i++)
    {
            for (j = 2; j < (_Arr[i] / 2); j++)
                    if (_Arr[i] % j == 0)
                            break;
 
            if (_Arr[i] % j != 0)
                    cout << "\nЧисло: " << _Arr[i] 
                            << "\nПозиция: " << i+1 << endl;
    }
 
    return 0;
}
p.s. у меня не то, что ошибок, а предупреждений нету. А сверху опечатался - хотел написать "Ввод сам добавь"
2
beliall
0 / 0 / 0
Регистрация: 24.01.2012
Сообщений: 31
25.01.2012, 22:03  [ТС] #9
Спасибо! если несложно напишите для чего тут
C++
1
break;
0
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
25.01.2012, 22:08 #10
достаточно проверить делители на промежутке 2..sqrt(x), так побыстрее будет)
C++
1
for (j = 2; j * j <= _Arr[i]; ++j)
0
Pavel.fromBy
13 / 13 / 1
Регистрация: 31.12.2011
Сообщений: 83
25.01.2012, 22:15 #11
beliall, если оно разделилось нацело - это уже не простое, дальше смысла нету гнать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2012, 22:15
Привет! Вот еще темы с ответами:

Вывод всех простых чисел в диапазоне от 1 до 100 - C++
Написать функцию, определяющую, является ли введенное целое чис- ло простым или нет. (Число простое, если оно делится только на 1 и на...

Напишите программу нахождения всех трехзначных простых чисел - C++
Найти все трехзначные простые числа

Как улучшить следующий код программы? Поиск всех простых чисел до 1000 - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; int main() { std::size_t size = 1000; bool *simpleArray = new bool (); ...

Массив целых чисел состоит из n элементов, найти сумму простых чисел, входящих в него - C++
массив целых чисел состоит из n элементов, найти сумму простых чисел, входящих в него.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.01.2012, 22:15
Ответ Создать тему
Опции темы

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