1. Scrieţi programul C++ corespunzător algoritmului dat și executați-l pentru x=140.

citeşte x(număr natural)
s=0
f=2
┌cât timp x>1 execută
│ p=0
│┌cât timp x%f=0 execută
││ x=[x/f]
││ p=p+1
│└■
│ s=s+p
│ f=f+1
└■
scrie s

2. Modificați programul de la punctul 1 astfel încât să înlocuiți structura "cât timp" cu structura repetitivă "pentru".

Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int x,s,f,p;

cout<<"x= "<<endl;

cin>>x;

s=0;

f=2;

while(x>1){

p=0;

  while(x%f==0){

       x=(int) (x/f);

       p=p+1;}

s=s+p;

f++;

}

cout<<s<<endl;

Explicație:

Cu "cin>>" se citeste o variabila data de tine de la tasatura.

=> cu cin>>x; am citit variabila x

Am initializat variabilele s=0 si f=2.

Cat timp in C/C++ este while(conditie), in cazul nostru conditie=x>1

Am initializat variabila p cu 0.

Am intrat in alt cat timp(while) in care conditia de oprire este ca restul impartirii lui f la x sa fie 0(x modulo f =0, adica f impartit  la x se imparte exact, nu da cu virgula).In acest while x-ul va fi mereu partea intreaga a impartirii lui f la x.Pt a retine partea intreaga vom face o conversie a acestei operatii de impartire.Int este un tip de date care retine numerele intregi(include numerele naturale)=> numere fara radicali, virgule, etc.

Cand am iesit din acest while, variabila s creste cu p(calculat mai inainte), iar cu "f++"(echivalent cu f=f+1) l-am crescut pe f cu 1.

Am iesit din while in momentul in care x este 1 sau mai mic decat 1 si afisam pe s.

Pt x=140 => se va afisa 4(programul numara de cate ori se imparte numarul x)

2. citeste x

  s=0

  f=2

┌ cat timp x>1 executa          

│  

│┌ pentru p<-0, x%f=0, 1 executa

││ x=[x/f]

└■

│ s=s+p

│ f=f+1

└■   

scrie s

Sper ca e bine, bafta!