Пожалуйста, посмотрите на следующее и посмотрите, можете ли вы дать совет.
cout << "2" << endl;
cout << "3" << endl;
ofstream of("Primes.txt");
unsigned long prime = 0;
unsigned long i = 1;
for (i = 1; i < 100000; i++)
{
prime = ((i*2)+(i+1) + (i % 2));
of << prime << endl;
}
of.close();
return 0;
Частично заполненная формула для вычисления n-го простого числа
n-е простое число выплевано, но так же, как и все его главные факторы
Как просеять через список и найти только простые числа.
5
7
11
13
17
19
23
25
29
31
35
37
41
43
47
49
53
55
59
61
65
67
71
73
77
79
83
85
89
91
95
97
101
103
ОК. Я немного изменил подходы - попробую реализовать
сита сегодня вечером - я собираюсь написать тест по информатике сейчас, но
вот моя новая реализация для некоторых простых чисел.
vector<int> Primes;
bool IsPrime(int q)
{
for(unsigned int i = 0; i < Primes.size(); i++)
{
if(q % Primes[i] == 0)
return false;
}
return true;
}
int main()
{
Primes.push_back(2);
cout << "2" << " is prime" << endl;
for (unsigned int i = 2; i < 1000000000; i++)
{
if(IsPrime(i))
{
Primes.push_back(i);
cout << i << " is prime" << endl;
}
}
}
Хорошо, это дает простые числа, но на самом деле использует много памяти.
И растет медленно со временем, поскольку вектор становится длиннее.