» »

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?

#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;
}

keworkian ::

Kaj pa dela num;?
Obscenities in B-Flat

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
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.

videc ::

Poišči, kako se ugotovi, ali je število praštevilo in potem implementiraj algoritem.

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.

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)].

TilkoM ::

Z vašo in s kolegovo pomočjo mi je uspelo napisati program, ki sem ga želel.
Hvala vam!

Gandalfar ::

Gandalfar je premaknil sporočila v [C++] Obdelovanje vhodnega besedila.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

NUJNO!Algoritmi C++

Oddelek: Pomoč in nasveti
211894 (1156) DOOM_er
»

Pomoc programiranje - Napisite funkcije

Oddelek: Programiranje
101974 (1563) FuI2cY
»

[Java] Prafaktorji

Oddelek: Programiranje
61572 (1425) darkkk
»

Najhitrejši programski jezik? (strani: 1 2 )

Oddelek: Programiranje
757525 (5345) Senitel
»

Problemi pri C++ programiranju...

Oddelek: Programiranje
363823 (3298) George

Več podobnih tem