Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Program determinare daca un nr. este prim
Last Updated: Apr 29 2011 23:18, Started by
Irys
, Jan 18 2006 16:26
·
0
#1
Posted 18 January 2006 - 16:26
Hey. Am si eu o problema. Incerc sa scriu un program care sa stabileasca daca un nr. introdus de utilizator si mai mic ca 200 este sau nu prim. Uitati codul pe care l-am scris la apasarea butonului de "Calculeaza!"
Quote Private Sub cmdCalcul_Click() N = Val(tbZahl.Text) If N >= 200 Then MsgBox (" Numarul trebuie sa fie mai mic decat 200! ") Else B = N - 1 For A = 2 To B Q = N / A R = N - (A * Q) Next A If R = 0 Then MsgBox ("Numarul nu este prim!") End End If If R <> 0 Then MsgBox ("Numarul este prim!") End End If End If End Sub dar programul, desi nu da erori, imi vede toate numerele introduse ca fiind prime. Asa ca nu stiu ce sa-i mai fac. A doua problema: am un Flex grid cu mai multe celule. Cum fac sa adun sau sa scad continutul numeric al toturor celulelor? Imi dau seama ca sunt intrebari cam tampite, imi pare rau... Edited by Irys, 18 January 2006 - 16:27. |
#2
Posted 18 January 2006 - 16:57
Foloseste Mod : (Used to divide two numbers and return only the remainder)
Private Sub cmdCalcul_Click() N = Val(tbZahl.Text) If N >= 200 Then MsgBox " Numarul trebuie sa fie mai mic decat 200! " Else If N Mod 2 = 0 Then MsgBox "Numarul este prim!" else MsgBox "Numarul nu este prim!" End If End If End Sub |
#3
Posted 18 January 2006 - 18:35
Codul tau nu merge pentru ca exista si numere neprime care nu se impart la 2, cum ar fii multiplii de 3, de 11, de 7, si in genere multiplii de numere prime. Un numar prim este un nr care nu se imparte exact (fara rest) decat la 1 si la sine. Am incercat sa adaptez codul tau, dar tot nu merge si-mi vede toate numerele ca fiind neprime! Help!
Private Sub cmdCalcul_Click() N = Val(tbZahl.Text) If N >= 200 Then MsgBox (" Numarul trebuie sa fie mai mic decat 200! ") Else B = N - 1 For A = 2 To B R = N Mod A Next A If R = 0 Then MsgBox ("Numarul nu este prim!") End End If If R <> 0 Then MsgBox (" Numarul este prim!") End End If End If Edited by Irys, 18 January 2006 - 18:38. |
#4
Posted 18 January 2006 - 19:32
boolean prim(int n){ for(int i = 0; i < sqrt(n); i++) if(n%i == 0) return false; return true; }tradu in vb .. ca nu stiu. Edited by sir.roko, 18 January 2006 - 19:33. |
#5
Posted 18 January 2006 - 19:34
nu stiu sintaxa vb deci ma bag ca musca in lapte variabila R trebuie sa o verifici de fiecare data in loop nu dupa ce iesi din loop(daca R este verificat in interiorul loopului scuze dar nu dupa cum am zis nu stiu sintaxa ). Inca ceva: ca sa vezi daca este prim este suficient ca B sa fie mai mare sau egal cu radical din n, nu trebuie sa te duci pana la n-1.
|
#6
Posted 18 January 2006 - 19:34
Irys, on Jan 18 2006, 18:35, said: Codul tau nu merge pentru ca exista si numere neprime care nu se impart la 2, cum ar fii multiplii de 3, de 11, de 7, si in genere multiplii de numere prime. Un numar prim este un nr care nu se imparte exact (fara rest) decat la 1 si la sine. Am incercat sa adaptez codul tau, dar tot nu merge si-mi vede toate numerele ca fiind neprime! Help! Private Sub cmdCalcul_Click() N = Val(tbZahl.Text) If N >= 200 Then MsgBox (" Numarul trebuie sa fie mai mic decat 200! ") Else B = N - 1 For A = 2 To B R = N Mod A Next A If R = 0 Then MsgBox ("Numarul nu este prim!") End End If If R <> 0 Then MsgBox (" Numarul este prim!") End End If End If k= true; for a =2 to sqrt(n) if n mod a = 0 then k = false if k = true then "Numarul este prim" else "Numarul nu este prim" |
#7
Posted 18 January 2006 - 20:41
In 2ore - max 3 poti sa scrii numerele prime pe o foaie si eventual sa le introduci in visual basic
Private sub command1_click() if text1="2" or text1="3" or Text1="un numar prim" then Label1.Caption = [Text1] & " este numar prim" end if End Sub |
#8
Posted 18 January 2006 - 21:32
#9
Posted 18 January 2006 - 22:43
#10
Posted 18 January 2006 - 23:34
Ce-mi place ideea aia cu numerele prime pe care le sciu manual Da stiu ca esti inventiv!!
Merci mult # andrei, solutia ta a fost cea mai utila (pacat ca am citit-o dupa ce am aflat de una singura cum e corect). Postez si aici cum am facut eu, poate le mai trebuie si altora. If N >= 200 Or N <= 0 Then MsgBox (" Numarul trebuie sa fie mai mic decat 200! ") Else For i = 2 To N/2 If N Mod i = 0 Then MsgBox (tbZahl.Text & " nu este numar prim") tbZahl.Text = " " Exit Sub End If Next i MsgBox (tbZahl.Text &"este numar prim") End If tbZahl.Text = " " End Sub Are cineva idee de chestia cu flex grid-ul? Spre exemplu cum fac sa adun doua casute dintr-un grid care sunt pe acelasi rand sa zicem. Edited by Irys, 18 January 2006 - 23:34. |
|
#11
Posted 20 January 2006 - 18:01
Irys, on Jan 18 2006, 23:34, said: Ce-mi place ideea aia cu numerele prime pe care le sciu manual Da stiu ca esti inventiv!! Merci mult # andrei, solutia ta a fost cea mai utila (pacat ca am citit-o dupa ce am aflat de una singura cum e corect). Postez si aici cum am facut eu, poate le mai trebuie si altora. If N >= 200 Or N <= 0 Then MsgBox (" Numarul trebuie sa fie mai mic decat 200! ") Else For i = 2 To N/2 If N Mod i = 0 Then MsgBox (tbZahl.Text & " nu este numar prim") tbZahl.Text = " " Exit Sub End If Next i MsgBox (tbZahl.Text &"este numar prim") End If tbZahl.Text = " " End Sub Are cineva idee de chestia cu flex grid-ul? Spre exemplu cum fac sa adun doua casute dintr-un grid care sunt pe acelasi rand sa zicem. 1. pt optimizare fa-l pana la int(sqr(N)) 2. Nu stiu vb dar : a) daca este read-only il poti calcula in fraza select daca vrei sa se updateze la modificarea celorlalte campuri ar trebui - ori sa faci in dataset campuri calculate (banuiesc ca exista si in vb - ) - ori la un eveniment al celor 2 casute de pe grid de genul: on validate, on change, on exit etc sa calculezi valoarea celui de-al treilea ... Edited by nida, 20 January 2006 - 18:10. |
#12
Posted 23 January 2006 - 19:13
Option Explicit
deseneaza flexgrid=flxgrd Private Sub Command1_Click() Dim Totale As Integer Dim ind As Long Dim idx As Long 'ma "invirt" in toate celulele si adaug valoarea gasita la total, ai nevoie de un text1 care sa afiseze rezultatul With flxGrd For ind = 0 To .Rows - 1 For idx = 0 To .Cols - 1 Totale = Totale + CInt(.TextMatrix(ind, idx)) Next Next End With Text1.Text = CStr(Totale) End Sub Private Sub Form_Load() Dim ind As Long Dim idx As Long With flxGrd .FixedCols = 0 .FixedRows = 0 .Cols = 3 '3 coloane .Rows = 4 '4 rinduri 'umplu cu valori aiurea For ind = 0 To .Cols - 1 For idx = 0 To .Rows - 1 .TextMatrix(idx, ind) = CStr(ind + idx) Next Next End With End Sub Sper ca ti-am fost de folos |
#13
Posted 25 February 2006 - 02:15
Irys, on Jan 18 2006, 23:34, said: Ce-mi place ideea aia cu numerele prime pe care le sciu manual Da stiu ca esti inventiv!! si mai rapid: faci un vector static de booleani cu 200 de de pozitii, il initializezi pe tot cu "false" si apoi faci v[i] = true numai daca i e prim. functia ta se reduce apoi la "return v[nr introdus]". sorry, nu cunosc VB, dat cam asta ar fi ideea. Edited by sapho, 25 February 2006 - 02:20. |
#14
Posted 26 February 2006 - 11:27
sapho, on Feb 25 2006, 02:15, said: pai evident este cea mai buna solutie. oricum, nu trebuie sa le scrii manual, le poti afla si cu un programel, faci un for de a 1 la 200 cu algoritmul pe care il ai deja si vezi care sunt rezultatele. cred ca nu sunt mai mult de 20-30 de numere. rezultatele le copiezi bine-mersi intr-un vector static si apoi pur si simplu de fiecare data cand apelezi functia ta doar verifici daca numarul se gaseste intrea alea cateva numere sau nu. e mai rapid oricum decat algoritmul tau (nu stiu daca VB stie sa lucreze cu fisiere, dar banuiesc ca da. cu putina imaginatie poti scoate numerele prime intr-un fisier, scrise numai bine ca sa poti da copy-paste in fisierul sursa). din pacate nu e aplicabil decat pentru numere prime mici... si mai rapid: faci un vector static de booleani cu 200 de de pozitii, il initializezi pe tot cu "false" si apoi faci v[i] = true numai daca i e prim. functia ta se reduce apoi la "return v[nr introdus]". sorry, nu cunosc VB, dat cam asta ar fi ideea. mama masii de programare... ajungem sa luam nr prime din fisier ia d'aici un algoritm foarte bun de generare a numerelor prime. E scris in pascal da' nu cred ca-i o mare problema sa-ti dai seama cam ce face fiecare instructziune: type PRIMINTERVAL=2..100000; //intervalul pe care vrem sa calculam numerele prime const MAXPRIM=100000; //numarul maxim pana la care cautam numere prime(tre sa fie cuprins in intervalul de mai sus) var isprim:array[priminterval] of boolean; //tablou' (dupa calculare daca isprim[numar]=true numaru e prim) procedure calcprime; var i,j:priminterval; num:dword; begin FillChar(isprim,length(isprim),true); //initializeaza toate valorile din tablou cu true (deocamdata toate sunt prime) //calculeaza numerele prime for i:=2 to MAXPRIM do if isprim[i] then begin j:=2; num:=i*j; while num<=MAXPRIM do begin isprim[num]:=false; inc(j); //i:=i+1 num:=i*j; end; end; //acu' cand vren sa shtim daca un nr e prim verificam daca isprim[nr_nostru]=true end; |
#15
Posted 29 April 2011 - 23:18
http://mate.info.ro/...Info.aspx?ID=16
De aici se poate descarca o aplicatie care stabileste daca un nr. este prim, descompune numere in factori primi, afla divizorii unui nr., calculeaza cmmdc si cmmmc si altele. |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users