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

Вывод простых чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
xumera
 Аватар для xumera
1 / 1 / 0
Регистрация: 05.07.2012
Сообщений: 81
13.09.2013, 21:57     Вывод простых чисел #1
Всем привет, люди помогите написать программу очень нужно и если можно то с комментариями. Написать программу, которая выводит простые числа в диапазоне от 100-500
а) простые числа выводятся в одну строку
б) по 5 чисел в строке
в) подсчитать количество элементов
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.09.2013, 21:57     Вывод простых чисел
Посмотрите здесь:

C++ Вывод всех простых чисел.
C++ Вывод простых чисел от m до n
C++ Дана последовательность целых чисел а1, а2, …, an. Выяснить, является ли она симметричной последовательностью простых чисел
C++ Программа c++ решето Эратосфена нахождение простых чисел от 1 до 1000000000 и вывод в файл
C++ Дан массив целых чисел. Верно ли, что он состоит только из простых чисел?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BF_
3 / 3 / 1
Регистрация: 07.09.2013
Сообщений: 68
13.09.2013, 22:34     Вывод простых чисел #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <ctime>
#include <cstdlib>
 
int main()
{
    srand (time(NULL));
    int j = 1;
    for(int i = 0; i != 20; ++i){
    if (j % 5 == 0) std::cout << rand() % 500 + 100 << std::endl;
    else std::cout << rand() % 500 + 100 << " ";
    ++j;}
    std::cout << j - 1; // количество элементов
    return 0;
}
xumera
 Аватар для xumera
1 / 1 / 0
Регистрация: 05.07.2012
Сообщений: 81
13.09.2013, 22:52  [ТС]     Вывод простых чисел #3
У меня что то не работает [C++ Error] Unit112.cpp(8): E2268 Call to undefined function 'time'
BF_
3 / 3 / 1
Регистрация: 07.09.2013
Сообщений: 68
14.09.2013, 00:16     Вывод простых чисел #4
Прости, я сначала не так задание понял, сейчас переделаю.

Добавлено через 1 час 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int simple(int n)
{
    for(int i = 2; i <= n / 2; i++) if((n % i) == 0) return 0;
    return 1;
}
 
int main()
{
    int j = 1;
    for(int i = 100; i != 501; i++)
        if(simple(i))
        {
            if (j % 5 == 0) std::cout << i << std::endl;
            else std::cout <<  i << " ";
            ++j;
        }
 
    std::cout << j - 1; // количество элементов
    return 0;
}
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
14.09.2013, 03:46     Вывод простых чисел #5

Не по теме:

ОМГ


Народ, ну давайте пользоваться поиском, сначала.
BF_, это как-то печально. Абсолютно топорная реализация. Неинтересная, неоптимальная и не очень красивая. Весьма читаемая только потому, что программа не очень большая.
Вот другой вариант, покруче. Комментарии на ломаном английском, если надо - переведу.

Много строк
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
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
 
// This function return vector of primes unsigned integer
vector<unsigned> getPrimes ( unsigned from, unsigned to ) { // both inclusive
    vector<unsigned> primes; // declaration of result vector
    bool *isprime = new bool[ to+1 ]; // creating sieve of Eratosthenes
    memset ( isprime, 0xFF, to ); // setting all marks as true so every number now is prime
    unsigned n = 2; // start from 2 becouse 1 obviously prime (or not prime - it's not a actual question here)
    for ( ; n*n <= to; n++ ) { // cycle throught all integers (lesser or equal than 'to')
        if ( isprime[ n ] ) { // if 'n' actualy is prime
            for ( unsigned i = n*n; i <= to; i += n ) { // than cycle throght all divisible by 'n' greater than square of 'n'
                isprime[ i ] = false; // and mark them as non-prime
            }
 
            if ( n > from ) { // also, if one included by range
                primes.push_back ( n ); // push it back into vector
            }
        }
    } // end of sieve
 
    n = std::max ( n, from ); // and, after sieve
    for ( ; n <= to; n++ ) {  // we go to the end of our range
        if ( isprime[ n ] ) { // in order to catch all remaining primes
            primes.push_back ( n ); // and push it back into vector
        }
    }
 
    return primes; // as final - return vector of primes
}
 
int main () {
    int line = 0; // just set it to -1 if you want to miss print line-breaker
    // cycle below just prints primes
    for ( auto prime: getPrimes ( 100, 500 ) ) {
        cout << prime << " ";
        if ( line != -1 ) {
            line++;
            if ( !(line%5) ) cout << endl; // end line-breaker, if line != -1
        }
    }
 
    return 0;
}
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
14.09.2013, 14:03     Вывод простых чисел #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
24
25
#include <iostream>
#include <cstdint>
 
uint64_t is_prime(uint64_t n)
{
    if (n <= 1ull) return false;
    for (uint64_t i = 2ull; i * i <= n; ++i)
        if (n % i == 0ull)
            return false;
    return true;
}
 
int main()
{
    int counter = 1;
    for(uint64_t i = 100; i != 501ull; ++i)
        if( is_prime(i) ) {
            std::cout << i << ' ';
            if (counter % 5 == 0) std::cout << std::endl;
            ++counter;
        }
    --counter;
    std::cout << "The number of primes: " << counter;
    return 0;
}
Yandex
Объявления
14.09.2013, 14:03     Вывод простых чисел
Ответ Создать тему
Опции темы

Текущее время: 16:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru