-
08-12-2011, 10:27 AM #1
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Giải thuật:
// so = số
// ts = thừa số
// tsLon = thừa số lớn, tức là số sau khi đã chia cho các thừa số tìm ra.
1. tsLon = so
1. Làm một vòng lặp ts=2 đến ts <= tsLon
2. xét ts nếu là nguyên tố thì :
2.1. nếu tsLon chia chẵn cho ts thì
2.1.1. in ra ts // đây là một thừa số nguyên tố
2.1.2. tsLon = tsLon/ts // chia cho thừa số này để xét chỗ còn lại
2.1.3. goto 3. // thử lại lần nữa
3. hết vòng lặp.
Tính chỉ giải thuật thôi, nhưng code bài này hơi khó:
Mã:int so = 996;int soLon = so;for (int ts = 2; ts <= soLon; ts++){ if (NguyenTo(ts)) // ví dụ đã có hàm xét số nguyên tố { while (soLon % ts == 0) { printf("%d ", ts); soLon /= ts; } }} // in ra// 2 2 3 83 // chú ý: code này chưa tối ưu hóa// gặp một số nguyên tố lớn, nó chạy từ đầu đến cuối và không biết cách dừng sớm
View more random threads:
- Mình cần giúp đỡ về bài tập vẽ sơ đồ khối
- Mọi người tìm giúp em lỗi sai trong bài quản lí sv
- Vào Giúp Mình Bài Đệ Quy Phi Tuyến (Khó) này với!!!!
- sửa đoạn code đảo ngược này đi các anh ơi
- Bạn nào pro :x xem dùm mình với . Xử lý file
- Viết chương trình quản lý hàng hóa (chạy trên Visual 2k5)
- bài tập lớn:lập trình bài toán "thanh toán liên ngân hàng"
- Giải phương trình bậc 2 sử dụng con trỏ....???
- Cấu trúc tự trỏ sao tự trỏ được??/
- cần xem gấp code về tìm ký tự trong chuỗi
-
08-12-2011, 06:32 PM #2
Silver member
- Ngày tham gia
- Sep 2015
- Đang ở
- Hà Nội
- Bài viết
- 0
Gửi bởi hik133
Mã:/*Phan tich mot so nguyen duong ra thua so nguyen to*/ #include<stdio.h> #include<conio.h> #include<math.h> int main() { int i,n; printf(" Nhap vao mot so nguyen duong:"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) { while(n%i==0) { if(n==i) printf("%d",i); else printf("%d*",i); n=n/i; } } getch(); }
-
08-12-2011, 07:06 PM #3
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
phân tích 1 số ra thừa số nguyên tố
1/anh nào giúp em viết 1 chương trình phân tích ra thừa số nguyen tố .
-
09-12-2011, 04:56 PM #4
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
^ có vẻ như bạn đang xài Turbo C/C++ với thiệt lập mặc định khi cài đặt.
Cái tab quá lớn.
Bạn nên vào option chỉnh lại tab nhỏ nhỏ cho phù hợp.
Tab là tốt nhưng tab lớn quá thì khó theo dõi cho người viết code cũng như đọc code đó bạn [IMG]images/smilies/biggrin.png[/IMG]
-
12-12-2011, 09:25 AM #5
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
cái đó cũng đâu có quan trọng! quan trọng là bài viết dễ nhìn thôi mà!
-
12-12-2011, 10:33 AM #6
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mã:#include<iostream.h> #include<conio.h> #include<stdio.h> #include<iomanip.h> void main() { clrscr(); int n; do { cout<<" nhap n = "; cin>>n; } while(n==0); int i=2;int check=0; while(n!=1) { if(n%i==0) { cout<<i; n=n/i; if(n==1) check=1; if(check==0) cout<<"*"; } else i++; } getch(); }
-
23-11-2012, 03:13 PM #7
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nobita_1992
-
28-07-2014, 10:55 AM #8
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thử vài lần đúng, mọi người kiểm tra giùm
Mã:#include <stdio.h> #include <math.h> bool nguyento(int n){ if(n<2) return false; for(int i=2;i<sqrt(n);i++){ if(n%i==0) return false; } return true; } main(){ int n; do{ printf("Moi nhap mot so:"); scanf("%d",&n); } while(n<2); printf("So %d la tich cua cac so:",n); for(int i=2;i<=n;i++){ if(nguyento(i)){ if(n%i==0){ printf(" %d",i); n=n/i; if(n>1) i=2; } } } }
-
28-07-2014, 11:03 AM #9
Junior Member
- Ngày tham gia
- Sep 2015
- Đang ở
- Hà Nội
- Bài viết
- 0
^ Viết vầy là ko đúng [IMG]images/smilies/smile.png[/IMG]
-
28-07-2014, 11:05 AM #10
Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi nhanCNTT
- - - Nội dung đã được cập nhật ngày 28-07-2014 lúc 04:05 PM - - -
Gửi bởi prog10
[/b] Tại Lương Sơn TV bạn sở hữu thể xem truyền hình trực tiếp bóng đá hôm nay các giải đấu to trong và ngoài nước. Lương Sơn TV ko chỉ đem lại những trận chiến mãn nhãn sở hữu chất lượng hình ảnh...
Các giải đấu không thể bỏ lỡ tại...