Kezdőoldal » Számítástechnika » Programozás » Hogy néz ki egy prímszám...

Hogy néz ki egy prímszám kiíró program c++ ban?

Figyelt kérdés
2011. dec. 13. 19:01
1 2
 1/14 A kérdező kommentje:
Léci segítsetek
2011. dec. 13. 19:16
 2/14 anonim ***** válasza:

#include <iostream>


using namespace std;


int main()

{

int count;


for(int i = 2; i < 1000; i++)

{

if(count == 0)

std::cout << i-1 << " ";

count = 0;

for(int j = 2; j < i/2 + 1; j++)

{

if(i%j == 0)

count++;

}

}

}


Egyszerű megvalósítás,de kiírja a prímeket 1000-ig. Ha az első for-ban átrod az 1000-et másra,akkor addig fogja.

2011. dec. 13. 21:11
Hasznos számodra ez a válasz?
 3/14 _Jessy_ ***** válasza:

Ez a megoldás is jó, de azért ezt:

count = 0;

for(int j = 2; j < i/2 + 1; j++)

átírnám erre:

count = 0;

int q = (int)sqrt(i) + 1;

if(i%2 == 0)

{

++count;

}

else

{

for(int j = 3; j < q; j += 2){...}

}

elég a gyökéig elszámolni, és az nagy számoknál jóval kisebb, mint a szám fele. másfelől pedig lehet kettesével számolni, ha nem osztható 2-vel, ha pedig igen, akkor úgysem prím...

2011. dec. 13. 22:17
Hasznos számodra ez a válasz?
 4/14 anonim ***** válasza:
2011. dec. 13. 22:47
Hasznos számodra ez a válasz?
 5/14 anonim ***** válasza:

Én pedig inkább ilyenre írnám át:


#include <iostream>


using namespace std;


int main()

{

int count;


for(int i = 2; i < 1000; i++)

{

if(count == 0)

std::cout << i-1 << " " << endl;

count = 0;

for(int j = 2; j < i/2 + 1; j++)

{

if(i%j == 0)

count++;

}

}

system ("pause");

return 0;

}

2012. márc. 20. 15:47
Hasznos számodra ez a válasz?
 6/14 anonim válasza:

lazán kapcsolódik:

Hogyan lehet azt megírni C++-ban, hogy számolja meg a 2 és 1000 közötti prímszámokat. Tehát ne magukat a számokat sorolja fel, hanem csak a darabszámot (168 db) írja ki. Köszönöm! :)

2013. máj. 7. 12:07
Hasznos számodra ez a válasz?
 7/14 anonim ***** válasza:

1.Kiíratás helyett beleteszed egy egyelőre 1000 elemú tömbbe( vagy egy dinamikus tömbe),esetleg egy struktúrába).

és utólag megnézed hogy melyik az else nem 0 elemú index.

Ez egy kicsit túlbonyolítása a problémának, de miért ne?

2.A kiírató utasítás helyett teszel mellé egy változót amit növelsz,majd utólag kiíratod.

2013. máj. 9. 11:28
Hasznos számodra ez a válasz?
 8/14 _Jessy_ ***** válasza:

pl. így:


#include <iostream>

#include <vector>

#include <math.h>


#define MAX 1000


using namespace std;


vector<int> primes;


bool prime(int number){

int sq = sqrt(number) + 1;

for(int i = 0; i < primes.size() && primes[i] < sq; ++i){

if((number % primes[i]) == 0){

return false;

}

}

primes.push_back(number);

return true;

}



int main(int argc, char **argv) {

primes.push_back(2);


int counter = 1;


for(int i = 3; i < MAX; i += 2){

if(prime(i)){

++counter;

}

}


cout << counter << endl;


return 0;

}

2013. máj. 9. 15:04
Hasznos számodra ez a válasz?
 9/14 anonim válasza:
És ha az lenne, hogy az első 20 olyan p prímszámot írja ki, amelyre a p+14 is prímszám?
2013. máj. 20. 23:42
Hasznos számodra ez a válasz?
 10/14 anonim ***** válasza:

Ha egy kicsit gondolkodtál volna gyorsan rájöhetnél.

#include <iostream>

#include <vector>

#include <math.h>

using namespace std;

vektor <long> primek;


bool prime(int number)

{

long darab =(long ) sqrt(number) + 1;

for(int i=2;i<primek.size()&& primek[i]<darab;i++)

{

if((number % primes[i]) == 0){

return false;

}

}

primek.push_back(number);

return true;

}

//idáig tök ugyanaz mint a felette lévő kód, csak átirtam a változókat, hogy ne simán copyzzam a kódot.

int main()

{

primes.push_back(2);

int counter = 1;

int tomb=new tomb[counter];

for(long i=1;counter=20;i++)

{

if( prime(i)==true && prime(i+14)==true)

{

tomb[i]=i;

counter++;

}

}

for(int j=0;j<counter;j++)

{

cout<<tomb[j]<<endl;

}

return 0;

}

2013. máj. 21. 15:29
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!