![]() |
[C++]recursieve functie
ik heb een recursieve functie waarmee ik wil bepalen of een ingevoerde getal wel of geen priemgetal is. De wiskundige functie die daarbij hoort is de volgende:
a(0) = 4; a(n+1) = (a(n)²-2) % M(n) als a(n-2) = 0 dan is n een priemgetal (wel effe in de gaten houden dat de n in de fucntie een andere n is dan de n die je opgeeft om te chekken of het een priem is) M(n) = 2^n -1. Dit is mn functie: Code:
int isPrime(int n, int a, const int Mn) Nu is dat bij kleine getallen geen probleem, maar als de getallen groter worden krijg je veel overbodig verlies van tijd. (en ja dit is niet echt een geschikte versie voor grote getallen maar dat komt later) Iemand tips? |
ik snap je functie niet echt, maar naar mijn idee vergeet je de returnwaarde van isPrime af te vangen in je recursive functie.
voorbeeldje uit de losse pols: Code:
// Faculteit |
int isPrime(int n, int a, const int Mn)
{ int ret; if((n-1) > 0) { a = ((a*a)-2) % Mn; ret = isPrime(n-1, a, Mn); } else { if( a == 0 ) { ret=ret+4; // jij zegt toch a(0) = 4; } } return ret; } a0 wordt niet gedefineerd ??? toch (al staat hij er nu niet meer in) |
Alle tijden zijn GMT +1. Het is nu 05:43. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.