Вывести простые числа от 1 до 100
Необходимо вывести числа между 1 и 100. Но при этом надо ввести простые числа в этом промежутке в вектор, хранящий простые числа. И после вывести этот вектор простых чисел. Объясните что тут не так, при выводе вектора все равно все его значения равны 0.
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
bool isPrime(long n)
{
for(long i=2; i<=sqrt(n); ++i)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
vector<long> primes(100);
int index = 0;
for(int i=2; i<=100; ++i, ++index)
{
if(isPrime(i))
primes.push_back(i);
}
for(int x:primes) cout<<primes[x]<<"\t";
return 0;
}
Ответы (1 шт):
Автор решения: Alexshev92
→ Ссылка
В конструкторе вектора нужно убрать размер (100), потому что тогда мы сразу создаём вектор из 100 элементов, инициализированных 0.
В цикле
for(int x:primes) cout<<primes[x]<<"\t";мы уже сразу итерируемся по элементам, поэтомуprimes[x], нужно заменить на простоx.
Как-то так
vector<long> primes;
int index = 0;
for(int i=2; i<=100; ++i, ++index)
{
if(isPrime(i))
primes.push_back(i);
}
for(int x : primes)
cout<< x << "\t";