| Subiectul anterior :: Subiectul urmator |
| Autor |
Mesaj |
wasile Elev
Data inscrierii: 16/Mar/2008 Mesaje: 2
|
Trimis: 16.03.2008 12:05 Titlul subiectului: Problema 05 |
|
|
Se considera numarul normal a, a>10000. Folosind descompunerea in factori primi a lui a, decideti daca asta poate fi exprimat ca produs de doua numere prime si dati un mesaj corespunzator.
De exemplu, pentru n=15, exista numerele 3 si 5 prime, care satisfac conditia din enunt,pentru n=4, exista numerele 2 si 2 prime, care satisfac conditia din enunt deci se va afisa mesajul Da, iar pentru n=45, se va afisa mesajul Nu.
| Cod: |
program ex5;
var a:longint;
p,k,d,i:integer;
begin
readln(a);
if sqrt(a)= trunc(sqrt(a)) then writeln('EXISTA')
else begin
d:=2;
k:=0;
repeat
p:=0;
while a mod d=0 do begin
p:=p+1;
a:=a div d;
end;
if p>0 then k:=k+p;
d:=d+1;
until a=1;
if k=2 then writeln('EXISTA')
else writeln('NU EXISTA');
end;
end. |
|
|
| Sus » |
|
 |
Irragal Administrator


Data inscrierii: 15/Mar/2008 Mesaje: 13
|
Trimis: 20.03.2008 17:22 Titlul subiectului: |
|
|
Vãd cã ai fãcut douã chestii inutile. N-are rost sã verifici dacã este pãtrat absolut ºi în loc sã incrementezi p-ul ºi sã adaugi la k poþi sã-l mãreºti direct pe ãsta.
Uite cum am fãcut eu:
| Cod: |
program prob5;
var a:longint;
k, d, i:integer;
begin
write('a='); readln(a);
d:=2; k:=0;
repeat
while a mod d = 0 do
begin
k:=k+1;
a:=a div d;
end;
d:=d+1;
until a = 1;
if k = 2 then writeln('Poate fi exprimat')
else writeln('Nu poate fi exprimat');
end. |
 |
|
| Sus » |
|
 |
oClasaAnonima Megaelev

Data inscrierii: 11/Apr/2008 Mesaje: 29
|
Trimis: 13.04.2008 13:46 Titlul subiectului: |
|
|
| Cod: |
{5. se considera numarul normal a, a<10000. folosind descompunerea in factori
primi a lui a, decideti daca asta poate fi exprimat ca conceput de doua nr
prime si dati un mesaj dorespunzator.}
program new;
var a, k:integer;
ok:boolean;
function prim(n:integer):boolean;
var j,d:integer;
begin
d:=0;
for j:=2 to (n div 2) do if (n mod j=0) then d:=d+1;
if d=0 then prim:=true
else prim:=false;
end;
begin
write('a: '); readln(a);
ok:=true;
k:=2;
while (k<=a div 2) and ok do if ((a mod k=0) and prim(k) and prim(a div k)) then begin
ok:=false;
write(k,' ',a div k);
end
else k:=k+1;
if ok then write ('nu se poate')
else write ('se poate');
end.
|
|
|
| Sus » |
|
 |
tabernaculum Superelev
Data inscrierii: 03/Iul/2012 Mesaje: 6 Localitate: Uganda
|
Trimis: 16.07.2012 06:14 Titlul subiectului: |
|
|
| I had no idea how to approach this before-now I'm locked and laoedd. |
|
| Sus » |
|
 |
tabernaculum Superelev
Data inscrierii: 03/Iul/2012 Mesaje: 6 Localitate: Uganda
|
Trimis: 17.07.2012 19:02 Titlul subiectului: |
|
|
| I love how amazing and awesome this is. |
|
| Sus » |
|
 |
|