CURS ONLINE INTERACTIV

Python 3

PENTRU ÎNCEPĂTORI

Proiect susținut de Uniunea Profesorilor de Informatică din România
PROBLEME REZOLVATE
PAG. 2 / 4
Instrucțiunea while
Acasă >>> Lecții online
CERINȚĂ

Se citeşte un număr natural n. Se cere să se decidă dacă este prim sau nu.

REZOLVARE

Această problemă a fost [rezolvată] cu ajutorul instrucţiunii for. Algoritmul folosit avea un neajuns. În cazul în care se găseşte un divizor, se caută mai departe, fără nici un rost, alţi divizori.

Cum eliminăm neajunsul amintit? Prin utilizarea instrucţiunii while, care e indispensabilă în astfel de situaţii (în care nu cunoaştem de câte ori se repetă secvenţa):

• se generează primul posibil divizor (2);
• pentru a executa instrucţiunea compusă subordonată lui while, acesta trebuie să îndeplinească simultan două condiţii:
     - să fie mai mic decât jumătatea numărului;
     - să nu dividă numărul.

De ce toate acestea? Pentru că instrucţiunea subordonată lui while generează următorul divizor. Cu alte cuvinte, ca să generăm următorul posibil divizor trebuie ca să existe un număr, mai mare decât cel analizat, care are şansa să fie divizor şi numărul analizat să nu fie divizor.

Mai jos aveți programul:
Editor - while_ex2.py
       
Rezultatul în consolă done
INTERESANT

Este demn de remarcat "trucul" folosit. Testul dacă un număr este sau nu divizor nu se face în instrucţiunea subordonată while, ci chiar în expresia logică a sa...

În aceste condiţii, cum decidem dacă numărul este sau nu prim? Simplu. Dacă s-au testat toate numerele posibile înseamnă că numărul este prim. Altfel, înseamnă că a fost găsit un divizor, caz în care bineînțeles că numărul nu este prim.
Analizează problema rezolvată,
apoi avansează la pagina următoare.
Manuale digitale


Editura noastră oferă de peste 27 de ani manuale şcolare aprobate M.E.N. şi auxiliare ce respectă programa şcolară, precum şi cursuri de Informatică şi T.I.C., utile oricărei persoane care doreşte să se pregătească în aceste domenii.
 home   list  LECȚII   perm_identity   arrow_upward