Une fraction p/q (p et q sont des entiers positifs) est correcte si p/q < 1. Étant donné 3 < = N < = 50 000 000, écrire un programme pour compter le nombre de les fractions propres p/q telles que p + q = n, et p, q sont des nombres premiers relatifs (leur plus grand commun diviseur est 1). Ce est mon codeCompter le nombre de fractions correctes
bool prime_pairs(int x, int y) {
int t = 0;
while (y != 0) {
t = y;
y = x % y;
x = t;
}
return (x == 1);
}
void proer_fractions(int n) {
int num = n % 2 == 0 ? n/2 - 1 : n/2, den = 0, count = 0;
for (; num > 0; --num) {
den = n - num;
if (prime_pairs(num, den))
++count;
}
printf("%d", count);
}
Je me demande si je l'ai fait correctement. Est-il possible d'accélérer l'algorithme? Il a fallu 2,97 secondes à mon portable (i7-4700mq) pour fonctionner avec le mode Release lorsque N = 50 000 000.
Merci beaucoup.
Non, ce n'est pas le cas. Ce problème a été donné par mon professeur. Voulez-vous que je clarifie quelque chose de flou? – dh16