Nói giải thuật cho tui nghe đi, rồi tui sữa cho?
Nhờ các bạn sửa giùm mình, kiểm tra n có là số nguyên tố hay ko.
Code:#include<stdio.h> #include<conio.h> void main() { unsigned int i,n; printf("\n Nhap vao 1 so nguyen duong n="); scanf("%u",&n); if(n==2)printf("\n n la so nguyen to"); else if(n%2==0)printf("\n n khong la so nguyen to"); else { i=3; while((i<n)&&((n%i)!=0)) i++; if(i>=n) printf("\n n la so nguyen to"); else printf("\n n khong la so nguyen to"); } getch(); }
Đã được chỉnh sửa lần cuối bởi Michael : 23-10-2008 lúc 06:36 PM.
Nói giải thuật cho tui nghe đi, rồi tui sữa cho?
mình nghĩ thuật giải của bạn đó là như vậy nè.
- những số nào là chẵn trừ 2 đều là thi không phải là nguyên tố.
- kiểm tra nhưng số lẻ còn lại.
- cho i=3 -> n-1; n%i!=0,i++
- nếu i>=n. n là số nguyên tố.
mình ra tiệm net. hổng mang theo bolandc nên không chạy thử được .
mà thấy đọc code cũng đâu sai đâu.
Mình sửa được rồi, thanks!
Số nguyên tố là số chỉ chia được cho 1 và chính nó.
Bạn chỉ cần dùng một vòng lặp kiểm tra điều kiện là xong.
Chú ý hạn chế vòng lặp.
Ví dụ: Muốn biết N có phải là số nguyên tố hay không ta chỉ cần kiểm tra xem nó chia hết đến N/2 thôi. Như thế đỡ mất thời gian...
tôi xin đề ra một giải thuật!! sẽ kiểm tra được mọi trường hợp!!
mọi người dùng thử và cho ý kiến!!
C Code:
#include <conio.h> #include <stdio.h> int songuyento(int n) { int i; if(n<2) return 0; for(i=2;i<n;i++) if(n%i==0) return 0; return 1; } void main() { int i,n; for(i=0;i<n;i++) { else } getch(); }
*Chú ý: Bỏ code vào thẻ tag code, nếu bạn chưa biết thì vui lòng kéo lên trên xem hướng dẫn.
Đã được chỉnh sửa lần cuối bởi QuangHoang : 24-10-2008 lúc 06:31 PM.
Đã được chỉnh sửa lần cuối bởi tsandtm : 24-10-2008 lúc 05:43 PM. Lý do: thiếu nội dung.
Mới học lập trình thì kiểm tra từ 2 đến n-1 như hqgk48 cho nó dễ hiểu. Cần gì n/2 với lại căn n
return giá trị nào thì sau khi hàm chạy xong nó sẽ trả về giá trị đó.
Đọc đoạn code thì sẽ hiểu là nếu n là sẽ nguyên tố thì hàm này trả về 1, nếu ko fải thì sẽ trả về 0.
if(songuyento(n))
tương đương với
if(songuyento(n) > 0)