Hogy kell C++ ban hogy írja ki A-tól B-ig a primszámokat?
#include <iostream>
using namespace std;
int main()
{int a, b, n, i , db;
cout<<"a = "; cin>>a;
cout<<"b = "; cin>>b;
for(n=a; n<=b; n=n+1)
db=0;
for(i=1; i<=n; i=i+1
if(n%i==0)
{ db=db+1;
}
if(db==2) cout<<n<<" ";
else cout<<"";
}
...idáig jutottam, hol hibáztam?
int main()
{
cout<<"a = "; cin>>a;
cout<<"b = "; cin>>b;
for(int i = a; i <= b; ++i)
if(prim(i))
cout << i << " ";
}
....
Ez előtt meg megírod a:
bool prim(int n)
{
...
}
algoritmust, ahol n-ről akarod kideríteni, hogy n prím vagy nem.
Tartsd figyelemben azt, hogy a ciklus változót i-vel szokták jelölni, ha több ciklus is van egymásban ágyazva, akkor i1, i2,...,in vagy i, j, k, l, v -vel.
...
C++-ban már lehet a ciklus törzsében is változódeklaráció.
Pl.
for(int i = 0; i < n; ++i)
..--..^..
...
Oszt mi a hiba?
A logikája jónak tűnik, persze csúnya, mint az állat, illetve ahogy ide másoltad szintaktikai hiba is van benne.
a prim() pedig lehet egy ciklus, ahol 2-től a szám gyökéig mész (i*i<=szam), a főprogramban lépkedhetsz kettesével
(pluszpont a kérdezőnek, végre valaki, aki normálisan kért segítséget..)
Végül sikerült megoldani a következőképpen:
#include <iostream>
using namespace std;
int main ()
{int a, b;
cout<<"a = "; cin>>a;
cout<<"b = "; cin>>b;
for (int n=a; n<=b; n++)
for (int i=2; i<n; i++)
{
if (n%i== 0)
break;
else if (n == i+1)
cout << n << " ";
}
return 0;
}
#6: Még finomíthatnál az algoritmusodon, nekem 0-tól 100-ig ezt hozta ki...
2 3 5 7 9 11 13 17 19 23 25 29 31 37 41 43 47 49 53 59 61 67 71 73 79 83 89 97
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!