Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Шмонько Богдан
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 23
1

Вывести все простые числа до заданного n (найти ошибку в коде)

17.02.2016, 01:41. Просмотров 631. Ответов 19
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main() {
    int n, i, a;
    cout << "Input the number"<<"\n";
    cin >> n;
    for (i = 1; i <= n; i++) {
        for (a = 2; a < i; a++) {
            if (i%a != 0) cout << i<<"\n";
        }
    }
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2016, 01:41
Ответы с готовыми решениями:

Вывести все простые числа до заданного N
Задача: Вывести все простые числа до заданного N. #include &lt;cstdlib&gt; #include...

Дано натуральное число. Вывести на экран все простые числа до заданного числа.
Дано натуральное число. Вывести на экран все простые числа до заданного числа.

Вывести все простые числа, меньше заданного
Дано натуральное число n. Простым называется число, имеет только два делителя -...

Вывести все простые числа из заданного пользователем массива
Задан линейный массив чисел N. N вводит пользователь. Вывести все простые числа...

Вывести все простые числа, меньшие заданного n, включительно
Простое число Помогите Пожалуйста! Простое число это число которое...

19
HELLKAR
14 / 14 / 14
Регистрация: 11.04.2015
Сообщений: 50
Завершенные тесты: 1
17.02.2016, 06:42 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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main() 
{
    setlocale (LC_ALL, "Russian");  //русификатор консоли
    
    int n, i=1;
    
    cout << "Введите число: "<< endl;
    cin >> n;
    
    while (i<=n)
    {
        cout << setw (4) << i;  //вывод чисел от 1 до n с шагом в 4 символа
        i++;
    }
    
    cout << endl;
    
    system("pause");
    return 0;
}
0
Sinnarenell
24 / 6 / 10
Регистрация: 28.01.2016
Сообщений: 26
17.02.2016, 09:30 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main() {
    int n, i, a;
    cout << "Input the number ";
    cin >> n;
    int count = 0;
    for (i = 1; i <= n; i++) {
            if (((i + count) % 2 != 0) && ((i + count) % 3 != 0)) cout << i + count <<"   ";
            count++;
    }
    system("pause");
    return 0;
}
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
17.02.2016, 09:36 4
HELLKAR, Sinnarenell, Всем двойка.
Шмонько Богдан, Три с минусом.
C++
1
2
3
4
5
6
for (i = 2; i <= n; i++) {
    for (a = 2; a*a <= i; a++) {
            if (i%a != 0) break;
     }
     if (a*a > i) cout << i<<"\n"; 
}
0
Sinnarenell
24 / 6 / 10
Регистрация: 28.01.2016
Сообщений: 26
17.02.2016, 09:43 5
Байт, прости но ты не прав
ах да там еще одно условие ((i + count) % 5 != 0) так правильней вроде все
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main() {
    int n, i, a;
    cout << "Input the number ";
    cin >> n;
    int count = 0;
    for (i = 1; i <= n; i++) {
            if (((i + count) % 2 != 0) && ((i + count) % 3 != 0) && ((i + count) % 5 != 0)) cout << i + count <<"   ";
            count++;
    }
    system("pause");
    return 0;
}
но тут выводит не до заданного далее сам разберешься удачи
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
17.02.2016, 09:45 6
Цитата Сообщение от Sinnarenell Посмотреть сообщение
Байт, прости но ты не прав
Я-то тебя прощаю. Число 49 не простит
0
Babysitter
17.02.2016, 09:48
  #7

Не по теме:

Байт, остановись, он же еще и семерку сейчас добавит

0
Sinnarenell
24 / 6 / 10
Регистрация: 28.01.2016
Сообщений: 26
17.02.2016, 09:49 8
Байт, а что это за цифры тоже не то и тебе двойка
2
3
4
6
8
12
24
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
17.02.2016, 09:54 9
Цитата Сообщение от Sinnarenell Посмотреть сообщение
а что это за цифры
Покажь код, которым ты это получил.
Цитата Сообщение от Babysitter Посмотреть сообщение
Байт, остановись, он же еще и семерку сейчас добавит
А я ему за это 121. Посмотрим, кто быстрее выдохнется
0
AlexVRud
478 / 190 / 72
Регистрация: 04.07.2014
Сообщений: 537
17.02.2016, 09:58 10
Цитата Сообщение от Байт Посмотреть сообщение
Покажь код, которым ты это получил.
Твоим кодом
1
Sinnarenell
24 / 6 / 10
Регистрация: 28.01.2016
Сообщений: 26
17.02.2016, 09:59 11
Байт,
C++
1
2
3
4
5
6
for (i = 2; i <= n; i++) {
    for (a = 2; a*a <= i; a++) {
            if (i%a != 0) break;
     }
     if (a*a > i) cout << i<<"\n"; 
}
Вот ты скинул но ведь это тоже не правильно
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
17.02.2016, 10:01 12
Sinnarenell, Ты прав. Ошибся я, ребята.
Строчка 3 следует читать if (i%a==0) break;
1
Babysitter
210 / 127 / 50
Регистрация: 23.11.2015
Сообщений: 374
Завершенные тесты: 2
17.02.2016, 10:06 13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
bool isSimple(unsigned N)
{
    for (int a = 2; a*a <= N; ++a)
        if (N % a == 0)
            return false;
    return true;
}
 
int main()
{
    for(unsigned i = 0; i < 100; ++i)
        if (isSimple(i))
            std::cout << i << std::endl;
}
1
Croessmah
++Ͻ
14608 / 8362 / 1576
Регистрация: 27.09.2012
Сообщений: 20,556
Записей в блоге: 2
Завершенные тесты: 1
17.02.2016, 14:43 14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <algorithm>
 
int main()
{
    std::vector<size_t> vec{2} ;
    size_t max_value = 100 ;
    for ( size_t number = 3 ; number < max_value ; number+=2 )
        if ( std::all_of(vec.begin(), vec.end(), [&number](const auto& e){ return (number%e) != 0 ; }) ){
            vec.push_back(number) ;
    }
    for (const auto& e: vec)
        std::cout << e << "  " ;
}
0
HELLKAR
14 / 14 / 14
Регистрация: 11.04.2015
Сообщений: 50
Завершенные тесты: 1
17.02.2016, 14:45 15
Байт, прошу прощения не правильно понял суть задачи.
переписал:
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
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    
    bool pointer;
    int i,j,n;
    
    cout << "Введите число:" << endl;
    cin >> n;
    
    for (i=2; i<=n; i++) 
    {
        pointer=true;
        for (j=2; j<i; j++) 
        if (!(i%j)) 
        {
            pointer=false; 
            break; 
        } 
                
        if (pointer==true) 
        cout << setw(4) << j;
    }
    cout << endl;
       
    system ("pause");
    return 0;
}
0
GbaLog-
Любитель чаепитий
3165 / 1471 / 465
Регистрация: 24.08.2014
Сообщений: 5,204
Записей в блоге: 1
Завершенные тесты: 2
17.02.2016, 14:58 16
Так сойдёт?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <cstdlib>
bool simple( int n ) {
    // игнорируем отрицательные числа
    n = abs(n);
    
    // 0 и 1 - не простые числа
    if( n == 0 || n == 1 ) return false;
    
    // находим делитель, денение на который происходит без остатка
    int div;
    for( div = n/2; n % div != 0; --div ) {
        ;
    }
    // если нет делителей >1, значит, число простое
    return div == 1;
}
0
Babysitter
210 / 127 / 50
Регистрация: 23.11.2015
Сообщений: 374
Завершенные тесты: 2
17.02.2016, 16:10 17
makfak, избыточно итерировать до N/2, достаточно квадратного корня из N
таким образом для числа 99971 ты сделаешь около пяти тысяч итераций вместо ста.
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
17.02.2016, 16:58 18
Цитата Сообщение от Babysitter Посмотреть сообщение
вместо ста.
вместо 314, простите за занудство

Добавлено через 59 секунд
HELLKAR, уже четверка Без pointer вполне можно обойтись
0
Babysitter
210 / 127 / 50
Регистрация: 23.11.2015
Сообщений: 374
Завершенные тесты: 2
17.02.2016, 17:01 19
Байт, промахнулся на порядок. ноль пропустил. 314 вместо пятидесяти тысяч.
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
17.02.2016, 17:06 20
HELLKAR, ну и еще совершенно справедливое замечание Babysitter. Так что все-таки троечка.
0
17.02.2016, 17:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2016, 17:06

Вывести на экран все простые числа, не превосходящие заданного N
1. Вывести на экран все простые числа, не превосходящие заданного N. Простым...

Вывести все простые числа до заданного числа
Нужно вывести все простые числа до заданного числа N. С помощью процедуры и без...

Найти все натуральные числа, меньшие заданного числа и взаимно простые с ним
Дано натуральное число n. Необходимо получить все натуральные числа, меньшие nn...


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

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

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