Informatică, întrebare adresată de PikachuuuLoveMe, 8 ani în urmă

Se da n apartine numerelor naturale nenule. Verificati daca cel mai mic divizor propriu e egal cu cel mai mare divizor propriu. In pseudocod.


boiustef: eu nu am învăţat pseudocod şi nu-i cunosc sintaxa... :((( Dar dacă fac în c++ şi dau şi explicaţii, merge?

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

citeste n

m:=[sqrt(n)]

daca m*m=n atunci

 p:=1

num:=2

cat timp num<[m/2] si p=1

 daca m%num=0 atunci p:=0

 sf_daca

 num:=num+1

sf_cat timp

daca p=1

    atunci

          scrie "cel mai mare si cel mai mic divizor propriu  egali"

         scrie m

    altfel

         scrie "cel mai mare si cel mai mic divizor propriu  nu-s egali"

 sf_daca

sf_daca

Explicație:

cel mai mare şi cel mai mic divizor propriu sunt egali numai la pătratele numerelor prime: 9, 25, 49, 121, 169, ... pentru care divizorii proprii în cauză sunt 3, 5, 7, 11, 13, ...

Dacă n=16, divizorii lui proprii sunt 2, 4, 8. Cel mai mic e 2, cel mai mare e 8.

nu sunt egali..

Dacă avem n=49, unicul divizor propriu este 7, deci sunt egali cel mai mare divizor propriu cu cel mai mic divizor propriu.

p.s. Logica este expusă, dar poate am lacune la sintaxă....  


PikachuuuLoveMe: multumesc mult!!
boiustef: stop... am o observaţie...
boiustef: esti aici?
boiustef: aloooo
PikachuuuLoveMe: dada
boiustef: cred tr de adăugat mai sus de ultimul sf_daca următoarele
altfel
scrie "cel mai mare si cel mai mic divizor propriu nu-s egali"
boiustef: asta este pentru cazul când nu este adevarat condiţia lui
daca m*m=n atunci
boiustef: de exemplu pentru n=15, m=(int)sqrt(n)=3 şi m*m==n este falsă deci trebuie de scris rspectiv
altfel
scrie "cel mai mare si cel mai mic divizor propriu nu-s egali"
Alte întrebări interesante