Kezdőoldal » Számítástechnika » Programozás » Prim számok szorzatára való...

Prim számok szorzatára való általánosítható kiszürés? (c++)

Figyelt kérdés
Irtam egy progit.. viszont egyetlen baj van vele , hogy nem tudom kiszürni vele az eféle számokat : 77(7*11),143(11*13)és igy tovább. Lehetséges megoldást kapni rá ? Elöre is köszönöm a válaszokat.

2016. nov. 6. 10:59
1 2 3
 11/23 SimkoL ***** válasza:
Picit még most is ködös, tedd fel a forráskódot, valószínűleg azt hamarabb megértjük :)
2016. nov. 6. 13:03
Hasznos számodra ez a válasz?
 12/23 A kérdező kommentje:

#include <iostream>

#include <math.h>

using namespace std;

int main()

{int c,k,i,n;

float h,a;

cout<<"Add meg hogy meddig irja ki a primeket=";

cin>>k;

for(i=1;i<=k;i++)

{c=i;

if((c%3!=0)&&(c%2!=0)&&(c%5!=0)||(c==2)||(c==3)||(c==5))

{h=sqrt(c); // h-sqrt(5) --- 2,23

a=pow(c,1.0/3); // a-sqrt3(5) ---1,70

n=a/1; // n-1

c=h/1; // c-2

{if((c!=h)&&(a!=n))

cout<<i<<" -Prim"<<endl;

else

cout<<i<<" -Nem Prim"<<endl;}

}

else

cout<<i<<" -Nem Prim"<<endl;

}

cin.get();

cin.get();

return 0;

}

2016. nov. 6. 13:48
 13/23 anonim ***** válasza:
Oké, tehát 1-től (illetve 2-től) egy adott k számig akarod megadni a prímszámokat. Hát, amit idevéstél az elég... érdekes megközelítés, és mint te is írtad, nem teljeskörű megoldás, sőt, nagyon sok számot elfogadsz így, amit nem kéne. Miért nem nyúltál valami egyszerűbb, és valóban működő metodikához, mint mondjuk az Eratoszthenészi szita. Az egy elég hatékony módja a prímkeresésnek.
2016. nov. 6. 15:46
Hasznos számodra ez a válasz?
 14/23 SimkoL ***** válasza:

Talán ez egyszerűbb és 'biztosabb':


#include <cstdlib>

#include <iostream>

#include <math.h>


using namespace std;


int main(){

bool prim_e;

int j, k;

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

j = (int)sqrt(i);

if (i == 2) cout << i << " ";

prim_e = (i % 2) != 0;

k = 3;

while ((prim_e) && (k < j )){

prim_e = (i % k) != 0;

k += 2;

}

if (prim_e) cout << i << " ";

}

system("PAUSE");

return 0;

}

2016. nov. 6. 16:54
Hasznos számodra ez a válasz?
 15/23 anonim ***** válasza:

Vagy akkor már ez:


#include<iostream>

#include<vector>


int main()

{

int N;

std::cout << "Give the upper limit of the prime search: ";

std::cin >> N;

if (N < 2) {

std::cout << "Really? Are you mocking me now?";

return 1;

}


bool NumberTable[N - 1];

for (int i = 0; i < N - 1; i++)

{

NumberTable[i] = true;

}


int startingIndex = 0;

std::vector<int> PrimeTable;


while (startingIndex < N - 1)

{

PrimeTable.push_back(startingIndex + 2);

for (int i = startingIndex; i < N - 1; i += startingIndex + 2)

{

NumberTable[i] = false;

}

do { startingIndex++; } while (!NumberTable[startingIndex]);

}


std::cout << "The prime numbers are:" << std::endl;

for (int i = 0; i < PrimeTable.size(); i++)

std::cout << PrimeTable[i] << std::endl;


std::cout<<"("<<PrimeTable.size() << "numbers in total)"<<std::endl;

}

2016. nov. 6. 17:24
Hasznos számodra ez a válasz?
 16/23 A kérdező kommentje:
Nos.. hogy ne hazudjak , én még uj vagyok ebben a dologban 1 vagy talán 2 honapja ha tudom az alapokat , és még nem is merem a vector és cstdlib bejelntést... a szitás módszert is gondolom megcsak forral lehetne megoldani.. az meg plusz futtatási idö.
2016. nov. 6. 17:37
 17/23 anonim ***** válasza:

A Eratoszthenészi szita az egyik leghatékonyabb prímkereső algoritmus. Prímkeresésre jelenleg nem ismeretes lineáris algoritmus, de ez a szita módszer azért közelíti. Igazából amit írtam, még nem is a teljes szitamódszer, kifelejtettem belőle, hogy elég a számok négyzetétől futtatni a belső for ciklust.


A helyes szitamódszerrel 100-ig terjedő számok esetében a fő algoritmus ha jól számolom, 128 iteráción megy végig, ami egyáltalán nem sok.

2016. nov. 6. 17:48
Hasznos számodra ez a válasz?
 18/23 A kérdező kommentje:
A föérdekeem az lenne hogy valahogy a sajátomat tudjam tökéletesiteni belsö forciklus nélkül , viszont rákacsintok arra amit mondtál, szoval kösz :)
2016. nov. 6. 18:34
 19/23 anonim ***** válasza:
mit akarsz te ciklus nélkül?
2016. nov. 6. 19:00
Hasznos számodra ez a válasz?
 20/23 A kérdező kommentje:
Hát anélkül szeretném tökéletesiteni a programot..
2016. nov. 6. 20:20
1 2 3

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!