Zobacz co robisz w tej pętli:
for (int j = 2; j <= as / 2; j++) // Tutaj inkrementacja j dopóki jest mniejsze lub równe as/2
{
if (an % j == 0) // Tu analizujesz resztę z dzielenia an przez j
{
isPrime = false;
}
else
{
cout << an << " "; // Wypsianie liczby
}
}
Jako że inkrementujesz j
raz będziesz miało wartość 2, potem 3, 4 i tak dalej dopóki nie będzie większe niż as / 2
. Raczej nie o to Ci chodzi, szczególnie że wtedy nie będzie Ci poprawnie działał if który miałby napisać czy liczba jest parzysta czy też nie.
Ehhh. Nie ogarniam tego...
Rozumiem działanie pętli, ale te nie śmigają. Jako wynik dostaję zwielokrotnione liczby, ale wypluwa wszystkie..
Zmienna j najpierw ma sprawdzać liczbę przez 2 potem przez 3 itp, szukam liczb pierwszych w tym wygenerowanym ciągu, przynajmniej staram się.
Instrukcje w tej formie nie spełniają swojego zadania, jakaś podpowiedź? Siedzę już parę h nad tymi instrukcjami i nie mogę zmusić ich do działania :/
Właściwie to dążę po mału do tego by instrukcja wygenerowała liczbę i skoczyła do modułu, który też wg tej samej metody będzie generował liczby w celu testu iloczynu by znaleźć liczby pierwsze z ciągu. Czyli an += x[i%XSIZE] generuje liczbę -skacze do innego modułu, który generuje te same, kolejne liczby ciągu i stara się podzielić.
Oczywiście próbuje dzielić do momentu, aż wygenerowana liczba jest >½ sprawdzanej.
Potem wypluwa wynik i wraca do pętli w celu wygenerowania kolejnej liczby do sprawdzenia. Da się to w miarę prosto ogarnąć? Najlepiej by było oczywiście jakby nową liczbę ciągu testował po prostu dzieląc ją przez już zapisane wyniki na tablicy.
Mój cały kod:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <chrono>
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
int zakres;
cout << "Podaj zakres: ";
cin >> zakres;
auto start = std::chrono::system_clock::now();
const int XSIZE = 8;
int x[XSIZE] = {2,3,4};
int a0 = 4;
int an=a0;
int i=0;
for(i=0; an<=zakres; i++)
{
an += x[i%XSIZE];
//intfile << an << " ";
//cout<<an<<" ";
}
//intfile.close();
auto end = std::chrono::system_clock::now();
chrono::duration<double> elapsed_seconds = end-start;
time_t end_time = std::chrono::system_clock::to_time_t(end);
std::cout << "finished computation at " << std::ctime(&end_time)
<< "elapsed time: " << elapsed_seconds.count() << "s\n";
}//main