Mi lehet ezzel a kóddal a probléma (c++)?
Mivel most tanulom a nyelvet valószínűleg tök egyszerű a megoldás csak én nem jövök rá.Lényeg hogy azt próbálja a program eldönteni hogy a szám prím-e de mindig az jön ki hogy nem.
int main()
{
int x,n,b = 0;
std::cin >> n;
for(x = 2;n%x != 0;x++)
if(x > n)
{
std::cout << "Prím";
b = 1;
}
if(b != 1)
std::cout << "Nem prím";
}
for után az if köré még egy {}?
Vagy a for ciklusban tesztelj másképp?
for (x=2; x<n; x++) { if (n%x != 0) b=1; }
if (b=1) {;} //Prím
else {;} // Nem prím
Irok neked 1 prim programot mert unatkozom :D.
#include<iostream>
using namespace std;/*ez azért van itt h ne keljen a cin cout elé irni a std::*/
int main()
{
int szam,fele,oszto;
cin >> szam;
if(szam>2)
{
fele=szam/2;
for(oszto=2;oszto<=fele;oszto++)
{
if(szam%oszto==0)
kösz de közben én is megoldottam :D így néz ki :
#include <iostream>
int main()
{
int x,n,b = 0;
std::cin >> n;
for(x = 2;x < n;x++)
if(n%x == 0){b = 1;}
if(b == 1)
std::cout << "Nem Prim";
else
std::cout << "Prim";
}
//Bocs az elöbb hamar küldtem
#include<iostream>
using namespace std;/*ez azért van itt h ne keljen a cin cout elé irni a std::*/
int main()
{
int szam,fele,oszto,db=0;
cin >> szam;
if(szam>2)
{
fele=szam/2;
for(oszto=2;oszto<=fele;oszto++)
{
if(szam%oszto==0)
{
db++;
}
}
if(db==0)
cout << "Prím";
else
cout << "Nem prím";
}
else
cout<<"Nem prim";
}
Gyorsítási lehetőségek:
-Elég a szám gyökéig nézelődni (lefele kerekítve)
-Ha már van egy osztója, tuti nem prím -> kiléphetünk a ciklusból
-Csak a páratlan számokat (és a kettőt) érdemes vizsgálni
-Ha véletlen megszámolni kell vmeddig a prímeket, érdemes eltárolni (egy darabig) -> nem kell az összes páratlan számot végignézni
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!