w liczby.txt znajduję się 200 różnych liczb całkowitych <2, 1.000.000>, każda w osobnym wierszu
Polecenie jest takie: Znajdź największą liczbę w pliku, która jest względnie pierwsza ze wszystkimi pozostałymi,
czyli taką, która z żadną z pozostałych liczb nie ma wspólnego dzielnika innego niż 1.
int nwd(int x, int y) //algorytm euklidesa
{
if (x < y)
return nwd(y,x);
if (y == 0)
return x;
return nwd(y,x%y);
}
int main()
{
ifstream in("liczby.txt");
ofstream out("wyniki.txt",fstream::app);
int liczby[200];
for(int i=0; i<200; i++)
{
int a;
in >> liczby[i];
}
int najwieksza = 0;
for(int i=0; i<200; i++)
{
bool ok = true;
for(int j=0; j<200; j++)
if (i != j && nwd(liczby[i],liczby[j])>1) //******** warunek i!=j ??
ok = false;
if (ok && liczby[i] > najwieksza)
najwieksza = liczby[i];
}
out << "Najwieksza wzglednie pierwsza: " << najwieksza << endl;
}
Moje pytanie jest takie: Dlaczego konieczny jest warunek i!=j ?
Jeżeli to będzie ta sama liczba, to i tak jej nwd jest większy od 1, w konsekwencji otrzymamy ok=false.
Jest on niezbędny, gdyż w przeciwnym razie wychodzi inny wynik.