•SpiderMan
|
|
« : Decembrie 26, 2009, 22:51:06 » |
|
Buna.Cum fac sa vad daca un numar este un numar prim daca numarul e un numar real?
|
|
|
Memorat
|
|
|
|
•klamathix
|
|
« Răspunde #1 : Decembrie 26, 2009, 22:57:47 » |
|
Numerele prime sunt prin definitie naturale
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #2 : 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)?
|
|
|
Memorat
|
|
|
|
•klamathix
|
|
« Răspunde #3 : Decembrie 26, 2009, 23:27:54 » |
|
Ok , nici notiunea de divizor nu e definita pe numere reale detaliaza , de ce ai nevoie ?
|
|
|
Memorat
|
|
|
|
•nparfene2004
Client obisnuit
Karma: 22
Deconectat
Mesaje: 81
|
|
« Răspunde #4 : 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.
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #5 : 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.....?
|
|
|
Memorat
|
|
|
|
•sima_cotizo
|
|
« Răspunde #6 : 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?
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #7 : 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.
|
|
|
Memorat
|
|
|
|
•alexandru92
|
|
« Răspunde #8 : 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 : 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";
|
|
|
Memorat
|
|
|
|
•pauldb
|
|
« Răspunde #9 : Decembrie 27, 2009, 13:39:43 » |
|
In Pascal exista tipul de date intregi int64 care tine valori pana la 264.
|
|
|
Memorat
|
Am zis
|
|
|
•devilkind
|
|
« Răspunde #10 : 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.
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #11 : 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? 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.)?
|
|
« Ultima modificare: Decembrie 27, 2009, 16:15:15 de către Robert Simoiu »
|
Memorat
|
|
|
|
•sima_cotizo
|
|
« Răspunde #12 : 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
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
|
« Răspunde #13 : Decembrie 27, 2009, 21:31:43 » |
|
Da dar am vrut sa vad si eu cum pot sa vad asta
|
|
« Ultima modificare: Ianuarie 06, 2010, 19:47:56 de către Robert Simoiu »
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #14 : Ianuarie 07, 2010, 15:50:48 » |
|
Poate te ajuta asta: if trunc(n / 2) * 2 = n then writeln('Se divide cu 2');
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•SpiderMan
|
|
« Răspunde #15 : Ianuarie 07, 2010, 15:58:53 » |
|
Da Merge merci asa am facut si eu si merge
|
|
|
Memorat
|
|
|
|
|