Печать простых чисел от 1 до 100 - PullRequest
13 голосов
/ 05 марта 2011

Этот код c ++ выводит следующие простые числа: 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97.

Но я не думаю, что моя книга так хочет, чтобы ее писали. Здесь упоминается кое-что о квадратном корне числа. Поэтому я попытался изменить свой второй цикл на for (int j=2; j<sqrt(i); j++), но он не дал мне нужного результата.

Как мне нужно изменить этот код так, как того хочет моя книга?

int main () 
{
    for (int i=2; i<100; i++) 
        for (int j=2; j<i; j++)
        {
            if (i % j == 0) 
                break;
            else if (i == j+1)
                cout << i << " ";

        }   
    return 0;
}

Простое целое число - это число, которое имеет ровно два разных делителя, а именно 1 и сам номер. Написать, запустить и протестировать программу на C ++, которая находит и печатает все простые числа меньше 100. (Подсказка: 1 - простое число число. Для каждого числа от 2 до 100 найти остаток = число% n, где n колеблется от 2 до sqrt (число). \ Если н больше, чем sqrt (число), число не делится поровну на п. Зачем? Если какой-либо остаток равен 0, число не является простым числом.)

Ответы [ 21 ]

0 голосов
/ 26 июня 2013

Вот моя реализация Решета Эратосфена (для простых чисел между 2 и n)

#include <iostream>

int main (){
int n=0;
std::cout << "n = ";
std::cin >> n;
std::cout << std::endl;

if (n==0 || n==1){
    std::cout << "No primes in this range" << std::endl;
    return 0;
}


const int array_len = n-2+1;

int the_int_array[array_len];
for (int counter=2; counter <=n; counter++)
    the_int_array[counter-2]=counter;


int runner = 0;
int new_runner = 0;

while (runner < array_len ){
    if (the_int_array[runner]!=0){
        new_runner = runner;
        new_runner = new_runner + the_int_array[runner];

        while (new_runner < array_len){
           the_int_array[new_runner] = 0;
           new_runner = (new_runner + the_int_array[runner]);
        }
    }
runner++;
}

runner = 0;

while (runner < array_len ){
    if (the_int_array[runner]!=0)
        std::cout << the_int_array[runner] << " ";
    runner++;
}

std::cout << std::endl;
return 0;

}

...