Ein Bruchteil p/q (p und q sind positive ganze Zahlen) ist richtig, wenn p/q < 1. Gegeben 3 < = N < = 50 000 000, schreiben Sie ein Programm, um die Anzahl zu zählen richtige Fraktionen p/q, so dass p + q = n, und p, q sind relative Primzahlen (ihr größter gemeinsamer Teiler ist 1). Dies ist mein CodeZählen Sie die Anzahl der richtigen Fraktionen
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);
}
Ich frage mich, ob ich es richtig gemacht. Gibt es trotzdem eine Beschleunigung des Algorithmus? Es dauerte meinen Laptop (i7-4700mq) 2,97 Sekunden mit Release-Modus, wenn N = 50 000 000.
Vielen Dank laufen.
Nein, ist es nicht. Dieses Problem wurde von meinem Professor gegeben. Möchtest du, dass ich etwas unklar mache? – dh16