infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Simoiu Robert din Decembrie 26, 2009, 22:51:06



Titlul: Numar prim
Scris de: Simoiu Robert din Decembrie 26, 2009, 22:51:06
Buna.Cum fac sa vad daca un numar este un numar prim daca numarul e un numar real?


Titlul: Răspuns: Numar prim
Scris de: Mihai Calancea din Decembrie 26, 2009, 22:57:47
Numerele prime sunt prin definitie naturale :)


Titlul: Răspuns: Numar prim
Scris de: Simoiu Robert din Decembrie 26, 2009, 23:14:07
Ok atunci formulez altcumva: cum fac sa verific daca un numar REAL se imparte exact la 2( nu pot folosi MOD-sunt in pascal- deoarece 2 e natural si numarul meu e real)?


Titlul: Răspuns: Numar prim
Scris de: Mihai Calancea din Decembrie 26, 2009, 23:27:54
Ok , nici notiunea de divizor nu e definita pe numere reale :D detaliaza , de ce ai nevoie ?


Titlul: Răspuns: Numar prim
Scris de: Parfene Narcis din Decembrie 27, 2009, 12:32:23
Probabil intrebarea este daca am un numar de genul 4.12 atunci impartirea la 2 e ok, pentru ca
412 : 2 = 206, (am facut 4.12 *100 = 412) dar 51.3 : 2 nu e ok (513 : 2 da restul 1).

Daca am inteles bine intrebarea, trebuie sa vezi cea mai din dreapta cifra zecimala daca e para sau impara.


Titlul: Răspuns: Numar prim
Scris de: Simoiu Robert din Decembrie 27, 2009, 13:04:46
Sa zicem ca avem un numar 98. Cum vedem daca se imparte la 2?Simplu. Vedem daca restul (mod) este 0. Dar daca vreau numere mai mari de 10 cifre(care trec de longint), nu pot apela la MOD pentru ca imi da eroare deoarece MOD este doar pentru numerele INTREGI, gen byte,word,integer. Daca am un numar 100000000000.0, el se imparte clar la 2 (eu vreau teoretic numere NATURALE, acel numar care l-am scris 10.... este natural, doar in PASCAL il vede REAL),dar nu pot sa vad daca restul lui la 2 este 0, deoarece se aplica,cum spuneam, doar la numerele intregi. Ce as putea face sa vad daca un numar se imparte la doi, un numar de forma a,00000.....?


Titlul: Răspuns: Numar prim
Scris de: Sima Cotizo din Decembrie 27, 2009, 13:27:28
Din cate inteleg, e un real cu partea fractionara zero. Nu ar fi simplu sa il convertesti in integer?


Titlul: Răspuns: Numar prim
Scris de: Simoiu Robert din Decembrie 27, 2009, 13:29:02
Cum sa-l convertesti cand integer merge pana la 5-6 cifre, iar nuamrul meu de exemplu e de 15 cifre sa zicem.


Titlul: Răspuns: Numar prim
Scris de: alexandru din Decembrie 27, 2009, 13:36:04
Cum sa-l convertesti cand integer merge pana la 5-6 cifre, iar nuamrul meu de exemplu e de 15 cifre sa zicem.
Retinel intr-un string si vezi daca ultima cifra este o cifra para.
Sau mai ai posibilitatea :
Cod:
 
double x, ip, fp;
cin>>x;
x/=2;
fp=modf( x, &ip );// imparte un numar real in doua parti, parte fractionara si partea intreaga, se gaseste in math.h
if( 0 == fp )
  cout<<"numarul este par\n";


Titlul: Răspuns: Numar prim
Scris de: Paul-Dan Baltescu din Decembrie 27, 2009, 13:39:43
In Pascal exista tipul de date intregi int64 care tine valori pana la 264.


Titlul: Răspuns: Numar prim
Scris de: Savin Tiberiu din Decembrie 27, 2009, 13:41:21
Atunci cand folosesti numere reale pentru a retine numere foarte mari se pierd ultimele cifre.
De exemplu sa zicem ca ai numarul:
1234567891011121131415
Si nu poti sa il tii in int si il tii ca numar real. Eh in acest caz numarul tau o sa devina ceva de genu
1234567890000000000000
(este doar un exemplu nu stiu exact de la ce valori incolo incep sa se piarda ultimele cifre, dar asa functioneaza).

Ceea ce incerci tu sa face poti rezolva impartind numarul la 2 si verificand daca partea lui fractionara e 0 (poti folosi functia floor ca sa afli partea fractionara desi nu stiu sigur daca exista in pascal), dar ai grija pentru ca e posibil ca rezultatul sa nu fie cel corect.


Titlul: Răspuns: Numar prim
Scris de: Simoiu Robert din Decembrie 27, 2009, 16:10:12
Ok, am luat si eu un caz mai "handicapat", teoretic eu vreau sa vad daca un numar REAL este prim ,adica sa il impart si la 2, si la 3, si la 5 si etc.. De exemplu un numar MARE. cum vad eu daca se imparte la 3,  sau la 9? Ii numar cifrele?  [-X
Si as mai vreau daca aveti toate domeniile posibile in Pascal, incluzand int64. Merci
EDIT:nu poti face mai usor asa: if trunc(n/3)=n/3(unde 3 sunt numerele la care vrei sa vezi daca se imparte acel nr.)?


Titlul: Răspuns: Numar prim
Scris de: Sima Cotizo din Decembrie 27, 2009, 21:18:10
Mi se pare ca vrei sa eviti lucrul cu numerele mari (retinute in vectori). Se poate sa pici in capcana preciziei numerelor reale. Gandeste-te ca un tip real pe 32 biti aloca mai putini biti "cifrelor semnificative" decat aloca un numar intreg, chiar daca un numar real poate retine numere mult mai mari. Un sfat ar fi sa intelegi mai bine cum sunt reprezentate numerele reale in floating point:

http://en.wikipedia.org/wiki/Floating_point#Internal_representation


Titlul: Răspuns: Numar prim
Scris de: Simoiu Robert din Decembrie 27, 2009, 21:31:43
Da dar am vrut sa vad si eu cum pot sa vad asta  [-X


Titlul: Răspuns: Numar prim
Scris de: Andrei Grigorean din Ianuarie 07, 2010, 15:50:48
Poate te ajuta asta:

Cod:
  if trunc(n / 2) * 2 = n then
    writeln('Se divide cu 2');


Titlul: Răspuns: Numar prim
Scris de: Simoiu Robert din Ianuarie 07, 2010, 15:58:53
Da Merge merci  :evil: asa am facut si eu si merge  :yahoo: