Liczby względnie pierwsze

0

Hej, napisałem program, który ma obliczyć liczbę liczb względnie pierwszych dla podanej liczby. Tzn. wczytuję liczbę np. 10. Na wyjściu ma być 4, ponieważ mamy 4 liczby mniejsze niż 10, które wraz z nią są liczbami pierwszymi (tu 1, 3, 7, 9). Programik niby prosty, ale w systemie oceniania dostaję 2/3 punkty nie wiem na jakim teście się nie zgadza.

#include <iostream>

using namespace std;

int nwd (int a, int b){
    int tmp;
    while (b != 0) {
		tmp = a % b;
		a = b;
		b = tmp;
    }
    return a;
}

int main () {
	int n, licznik=0;
	cin >> n;
	for (int i=1; i<n; i++) {
		if (nwd(n, i)==1) {
			licznik++;
		}
	}
	cout << licznik;

    return 0;
}
0

Zapewne dlatego, że twój program nie mieści się w limicie czasu dla dużych liczb.
Sprawdź w treści zadania jakie są ograniczenia na dane wejściowe i czy są limity czasowe.

0

Właśnie nic takiego nie ma. Jedyny warunek jest taki, że liczba ma być mniejsza niż 10000. W testach tym błędu to WA, czyli błędna odpowiedź, ale nie wiem dla jakich danych coś jest nie tak :)

0

Nie wiem moze problem w tym że z tego co pamiętam 1 nie jest liczbą pierwsza

0

No 1 nie jest, ale liczby względnie pierwsze to takie, które mają nwd równy 1, czyli np. nwd(8,1)=1 więc ta para jest względnie pierwsza.

0

Dla jedynki powinno być jeden a nie zero

0

Daj linka do zadania, bo moim zdaniem brakuje nam konkretnych informacji.

0

Powinno być w pętli for n<=1

1 użytkowników online, w tym zalogowanych: 0, gości: 1