C++ nybörjare.. hjälp med lösning.

Permalänk
Medlem

C++ nybörjare.. hjälp med lösning.

Hej,

Jag har en uppgift där jag ska ordna följande:

Step 2
Write a function Test_Prime that tests whether a given integer N ≥ 1 (input parameter) is a
prime number. If N is prime then the function returns true. Otherwise, the function returns
false . Then, add a function call to Test_Prime in the main program. Find the suitable
place in the main to add the function call.

Den biten jag har problem med är själva funktionen som ska uträtta detta. Jag har hittat en lösning men förstår inte vad den gör... om någon kan vara villig att förklara / hitta en lättare lösning så skulle det uppskattas.
Lösningen jag har hittat har med bool att göra..
Och hur ska jag kalla på den i Case 1?

#include <cmath> using namespace std; //Funktioner. bool test_prime(int n) { for (int i = 2; i < n; i++) { if (n % i == 0) { return false; } } return true; } int main() { int option; do { cout << setw(15) << setfill ('-') << "-" <<endl; cout << "1. Test prime" << endl; cout << "2. Next prime" << endl; cout << "3. Prev prime" << endl, cout << "4. Display Primes" << endl; cout << "5. Exit" << endl; cout << setw(15) << setfill ('-') << "-" <<endl; cout << "Choose your option: "; cin >> option; switch (option) { case 1: } } while (option != 5); return (0); }

Visa signatur

Desktop: Case: Loque - Ghost S1 MK2 + L-Top Hat | MB: ASRock Z390 Phantom Gaming-ITX/ac | GK: Gigabyte GeForce RTX 2070 8GB GAMING OC | CPU: Intel Core i7 9700K @ Stock | PSU: Corsair SF600 v2 | RAM: Corsair Vengeance LPX DDR4 3200MHz 2x8GB | SSD: Samsung 970 EVO 500GB | Watercooling: NZXT Kraken X52 (2xNoctua NF-A12x25 PWM)| [Win 10 x64].

Permalänk
Medlem

Någon enklarelösning lär du inte hitta. Det enda den gör är att den kollar ifall talet är odelbart med alla heltal mindre än sig själv.Isåfall är det ju ett primtal. Det är väldigt basic kod. För att förstå den kan du googla modulus operator,for_loop och primtal.

Permalänk
Medlem

Här har du en länk som förklarar hur man anropar funktioner och hanterar retur värden.
http://www.cplusplus.com/doc/tutorial/functions/

Visa signatur

orka

Permalänk
Medlem

Du behöver inte testa om talet är delbart med alla tal mindre än sig själv.
Det räcker gott att testa delbarheten med alla tal upp till och med roten ur talet (avrundat nedåt till närmaste heltal om roten ur talet inte är ett heltal).

Visa signatur

Namn : Jesper | Ålder : 45 | In-game namn : iller
Yrke : Matematisk modellerare (finansiell matematik), mjukvaruutvecklare för risksystem.
Utbildning : Doktor i matematik + en del mat-stat, numme och IT-relaterat.

Permalänk
Medlem

modulus operatorn returnerar resten av en heltalsdivision. Exempelvis 3%3 och 6%3 returnerar noll eftersom de är jämnt delbara. 17%3 returnerar 2 eftersom 17/3 = 5 + 2/3. Så om modulus returnerar noll så vet du att det är jämnt delbart med ett tal, dvs det kan inte vara ett primtal.

Förutom upp till roten ur, som JesperT skrev, så räcker det med om du kollar udda tal, för inga jämna tal är primtal.

Permalänk
Medlem

Meningen är väl att du ska skriva funktionen själv?!? Inte kopiera någon annans lösning!

Du vill ju ha reda på om det är ett primtal eller inte, då kan funktionen svara med en bool, dvs ja eller nej.