Mondatszerű leírásban ezt hogy írjam meg?
Légyszíves ne csak félmegoldásokat, nem tudom sajnos megoldani.Fontos.
A feladat:
Bekérünk egy számot és prímtényezőkre bontjuk.
Előre is köszi!!
Be: szám
ciklus i=1-től szám-ig:
ha prim(i): ki prim
ciklus vége
A ki: prim helyett ki: i
És a prim függvény:
függvény prim(n szám):
ha n=1: vissza Hamis
ha n<4: vissza Igaz
ha n%2=0: vissza Hamis
ha n<9: vissza Igaz
ha n%3=0: vissza Hamis
r=kerekítés(gyök(n))
f=5
ciklus amíg f<=r
ha n%f=0: vissza Hamis
ha n%(f+2)=0: vissza Hamis
f=f+6
ciklus vége
vissza Igaz
függvény vége
A %-jel az osztás maradékát adja (tehát 3%2=1, 7%4=3 stb.)
fú hát sajnos nem nagyon értem, hogy most mivan xD
most akkor bele kell írnom azt is amit te írtál 2.?
vagymii? :((
Ennek alapján meg kéne tudd csinálni.
A lényeg : van ugye egy N számod, amit bekérsz.(eddig még gondolom megy a dolog)
Elvileg úgy lehet egy számot prímtényezőkre bontani, hogy szépen elkezded a legkisebb prímszámtól kezdve(ez a 2) elosztogatni, és amelyikkel osztható, az egy prímtényező lesz. Ha találtál egy prímtényezőt, akkor elosztod vele az eredeti N számot, és ennek a osztásnak az eredményén elölről kezded az egészet, mindezt egészen addig csinálod, amíg az osztás maradékaként nem egy olyan számot kapsz, ami maga is prímszám. Ha idáig elértél, akkor vége van.
Én a következőképpen csinálnám: megvan az N szám. Kigenerálnám egy tömbbe az összes prímszámot, ami kisebb, mint N négyzetgyöke(nyilvánvaló, hogy az annál nagyobb prímtényezője -ha van - kijön valamelyik osztás eredményeként is,ezért felesleges annál többet).
Aztán fogod, egy ciklusban(ami addig fut, amíg N nem prímszám) indítasz egy belső ciklust, és a legkisebb prímszámtól kezdve elkezded elosztogatni N-t a prímszámokkal. Amint találsz egy olyat, amivel N oszható, azt a prímszámot(legyen p) belerakod mondjuk egy eredmeny nevű tömbbe, aztán N = N/p, és végül, miután a külső ciklusból is kiléptél, magát az N-t is belerakod az eredmeny tömbbe.
Prímszámgenerálás az gondolom megy. Ha mégse: elindulsz a legkisebb páratlan prímszámtól(ez a 3, legyen mondjuk P) 2esével növelve P-t, és minden P-re megvizsgálod, hogy osztható-e az előtte talált prímszámok bármelyikével(valójában itt is elég lenne csak a négyzetgyökig nézni, de ne bonyolítsuk). Ha nem, akkor hozzáadod a prímlistádhoz, ha igen, akkor nem csinálsz semmit.
#include<iostream>
using namespace std;
int main(){
int i,n,b=0,c,f=0;
int a[50],e[50];
cin>>n;
for(i=1;i<n;){
if(n%i==0){
a[b]=i;
b=b+1;
}
}
for(i=1;i<(n/2);i++){
if(a[b]%i==0){
d=d+1;
e[f]=a[b];
}
}
for(i=0;i<=f;i++)
cout<<e[i];
cout<<d<<"primszam volt osztoi kozott";
}
ez egy teljes C++ megoldás
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!