Forum » Programiranje » C++ program, izpis praštevil
C++ program, izpis praštevil
TilkoM ::
Pozdravljeni!
Sem začetnik in potrebujem pomoč.
Napisati bi moral preprost program, ki izpiše prvih 20 praštevil. To sem tudi naredil, vendar ne najbolj pravilno (ker vem, da je 20. praštevilo 71 sem ga direktno vpisal, program pa mi je izpisal vse ostale - 2,3,5,7,11,13,17,...). Zanima me, kako bi v spodaj napisani program vnesel števec, ki bi izpisal prvih 20 praštevil?
Sem začetnik in potrebujem pomoč.
Napisati bi moral preprost program, ki izpiše prvih 20 praštevil. To sem tudi naredil, vendar ne najbolj pravilno (ker vem, da je 20. praštevilo 71 sem ga direktno vpisal, program pa mi je izpisal vse ostale - 2,3,5,7,11,13,17,...). Zanima me, kako bi v spodaj napisani program vnesel števec, ki bi izpisal prvih 20 praštevil?
#include <iostream> using namespace std; int main() { int num; bool jePra=true; for(int i=2; i<=71; i++) { for (int j=2; j<=num; j++) { if (i!=j && i % j==0) { jePra=false; break; } } if (jePra) { cout <<"Prastevilo :"<< i << endl; } jePra=true; } system("PAUSE"); return 0; }
TilkoM ::
ah..se opravičujem. Zgoraj ni pravilno. Zdaj je prav.
#include <iostream> using namespace std; int main() { bool jePra=true; for(int i=2; i<=71; i++) { for (int j=2; j<=71; j++) { if (i!=j && i % j==0) { jePra=false; break; } } if (jePra) { cout <<"Prastevilo :"<< i << endl; } jePra=true; } system("PAUSE"); return 0; }
Wrop ::
imej en števec praštevil, in vse skupaj postavi v while zanko, nekako tako
No na nek tak način. Če hočeš, da bo algoritem hitrejši, potem začni s številom 3 in vsako iteracijo prištevaj 2.
int stPrastevil = 0; int stevilo = 2; while(stPrastevil < 20) { if (isPrime(stevilo)==true) { stPrastevil++; izpisStevila(stevilo) } stevilo++; }
No na nek tak način. Če hočeš, da bo algoritem hitrejši, potem začni s številom 3 in vsako iteracijo prištevaj 2.
kogledom ::
v array (20) shranjuj praštevila. Prvo praštevilo sam dodaj - 2. Nato za vsako liho število preveri, če je deljivo s katerim od do tedaj znanih praštevil, ki so manjša od korena trenutnega števila. Če ne najdeš delitelja, potem je število naslednje praštevilo. Ko zapolniš array, si končal.
Zgodovina sprememb…
- spremenil: kogledom ()
TilkoM ::
Wrop- recimo,da razumem kako razmišlaš.vendar: kam naj postavim while zanko, da bo program delal? do sedaj mi je "uspelo" samo tako, da je izpisovalo 2,2,2,2,2,2,... in pa 2,2,3,2,3,2,3,2,...
Delo z array-i se mi zdi zanimivo ampak tega delovanja ne razumem. raje bi naredil z zanko.
Delo z array-i se mi zdi zanimivo ampak tega delovanja ne razumem. raje bi naredil z zanko.
bigbada ::
Sicer napisano v C#, ampak mislim, da bo ti pomagalo. Samo malo spremeniš, ter prilagodiš za c++. Aja vidim, da hočeš brez funkcij rešiti. Pol pa sam naredi en števec ter while zanko, da izpisuje do takrat, ko je število izpisanih praštevil enako številoŽeljenihIzpisanihPraštevil.
using System; using System.Collections.Generic; using System.Text; namespace prastevilo { class Program { static bool jePrastevilo(int stevilo) //funkcija preveri, če je število praštevilo { bool delitelj = true; for (int i = (stevilo - 1); i > 1; i--) { if (stevilo % i == 0) { delitelj = false; break; } } return delitelj; } static void Main(string[] args) { int stevilo = 2; int stevec = 0; Console.WriteLine("Vnesi koliko prastevil zelis izpisati: "); int kolikoJihHocesIzpisati = int.Parse(Console.ReadLine()); while (stevec < kolikoJihHocesIzpisati) //dokler je števec manjši od željenih izpisanih praštevil nadaljuj { if (jePrastevilo(stevilo) == true) //klic funkcije... če je število praštevilo povečaj števec { Console.WriteLine(stevilo); stevec++; } stevilo++; //naslednje število za katero preverimo če je praštevilo } Console.ReadKey(); } } }
Zgodovina sprememb…
- spremenilo: bigbada ()
TilkoM ::
jezika C# sploh ne poznam. vidm kako je nakazan program in ga približno razumem, ampk ne dovolj,da bi si z njim veliko pomagal.
technolog ::
Pa drugače, ko preverjaš, če je neko število (recimo N) praštevilo, je ok, da preverjaš za deljivost samo števila [2, koren(N)].
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | NUJNO!Algoritmi C++Oddelek: Pomoč in nasveti | 1965 (1227) | DOOM_er |
» | Pomoc programiranje - Napisite funkcijeOddelek: Programiranje | 2030 (1619) | FuI2cY |
» | [Java] PrafaktorjiOddelek: Programiranje | 1634 (1487) | darkkk |
» | Najhitrejši programski jezik? (strani: 1 2 )Oddelek: Programiranje | 7712 (5532) | Senitel |
» | Problemi pri C++ programiranju...Oddelek: Programiranje | 3899 (3374) | George |