Kiểm Tra Số Nguyên Tố Trong Mảng - Programming - Dạy Nhau Học Trang chủ » Hàm Kiểm Tra Số Nguyên To Trong Mảng C » Kiểm Tra Số Nguyên Tố Trong Mảng - Programming - Dạy Nhau Học Có thể bạn quan tâm Hàm Kiểm Tra Số Nguyên Tố Trong Python Hàm Kiểm Tra Sql Hàm Kiểm Tra Trùng Dữ Liệu Trong Sql Hàm Kiểm Tra Trùng Lặp Trong Excel Hàm Kiểm Tra Trùng Tên Trong Excel Kiểm tra số nguyên tố trong mảng programming c++ thanh1997 (thanh) January 9, 2016, 7:20am #1 đây là code số nguyên tố của em mà sao nó không chạy #include<iostream> using namespace std; #define Max 100 void nhapmang(int mang1chieu[Max], int &sopt){ cout << "\nNhap so phan tu:"; cin >> sopt; for (int i = 0; i < sopt; i++) { cout << "\nNhap so phan tu thu " << i << ": "; cin >> mang1chieu[i]; } } void xuatmang(int mang1chieu[Max], int sopt){ for (int i = 0; i < sopt; i++) { cout << "\nSo phan tu thu " << i << ": " << mang1chieu[i]; } } void KTSN(int mang1chieu[Max], int sopt){ int dem = 0; for (int i = 0; i < sopt; i++) { for (int n = 1; n < sopt; n++){ if (mang1chieu[i] % n == 0) dem++; } if (dem == 2) cout << mang1chieu[i] << "la so ngto"; } } void main(){ int mang1chieu[Max], sopt; nhapmang(mang1chieu, sopt); xuatmang(mang1chieu, sopt); KTSN(mang1chieu, sopt); system("pause"); } 1 Like Phong_Tran (Trần Hồng Phong) January 9, 2016, 6:39am #2 Hàm quan trọng nhất là KTSN() bị sai. for (int n = 1; n < sopt; n++) => for (int n = 1; n <= mang1chieu[i]; n++) Biến dem đem vào trong vòng for thứ nhất để nó reset lại Mình nghĩ bạn nên tách thành 2 hàm Kiểm tra số nguyên tố (1 số) và Kiểm tra số nguyên tố trong mảng. Như vậy sẽ dễ hiểu hơn, và tránh được sai xót 2 Likes zehanzo (Hồ Minh Chiến) January 10, 2016, 2:30am #3 bool songto(int n){ if (n < 2) return false; if ( n == 2) return true; for (int i = 1; i < (n/2); ++i) if (n % i == 0) return false; return true; } void KTSN(int mang1chieu[Max], int sopt){ for (int i = 0; i < sopt; i++) if (songto(mang1chieu[1]) cout << mang1chieu[i] << “la so ngto”; } thanh1997 (thanh) January 10, 2016, 3:07am #4 ủa ở dòng 3 trong hàm KTSN hình như thiếu điều kiện của if mà. thanh1997 (thanh) January 10, 2016, 3:19am #5 em sửa lại thành thế này mà nó vẫn không chạy là sao ạ T.T #include<iostream> using namespace std; #define Max 50 void nhap(int mang1chieu[Max],int &sopt){ cout << "\nNhap so phan tu:"; cin >> sopt; for (int i = 0; i < sopt; i++) { cout << "\nNhap phan tu thu " << i<<":"; cin >> mang1chieu[i]; } } int tong(int mang1chieu[Max],int sopt){ int lonnhat=mang1chieu[0]; lonnhat = mang1chieu[0]; for (int i = 0; i<sopt; i++) { if (lonnhat<mang1chieu[i]) lonnhat = mang1chieu[i]; } return lonnhat; } bool KTSNT(int n){ int dem = 0; if (n < 2) return false; for (int i = 1; i < n; i++) { if (n%i == 0) dem++; } if (dem == 2) return true; return false; } void kiemtraSNT(int mang1chieu[Max],int sopt){ for (int i = 0; i < sopt; i++) { KTSNT(mang1chieu[i]); if (mang1chieu[i] == true) cout << mang1chieu[i]<<" la so nguyen to trong mang."<<endl; } if (KTSNT == false) cout << "\nKhong co so nguyen to trong mang:"; } void main(){ int mang1chieu[Max],n; nhap(mang1chieu,n); cout << "\nSo lon nhat trong mang la:" << tong(mang1chieu,n) << endl; kiemtraSNT(mang1chieu, n); system("pause"); } zhenande (Liêu Đức Mạnh) January 10, 2016, 6:29am #6 Đầu tiên ở hàm “tong”, bạn viết 1 lúc 2 lệnh giống nhau chi cho dư thừa vậy??? int lonnhat=mang1chieu[0];(1) lonnhat = mang1chieu[0];(2) Nếu bạn đã viết số 1 rồi thì không cần viết cái số 2 làm gì nữa. Thứ 2 ở hàm KTSNT nếu bạn muốn “dem == 2” để xét đk snt thì trong vòng for “i<=n” khi đó n%1 và n%n mới đúng, còn nếu “i<n” như bạn viết thì sẽ sai kết quả. Thứ 3 ở hàm kiemtraSNT trong vòng for câu lệnh if. mang1chieu[i] là kiểu int, không thể so sánh với kiểu bool được. KTSNT(mang1chieu[i]); if (mang1chieu[i] == true) viết như trên là sai, sửa: if(KTSNT(mang1chieu[i])) // Vì hàm KTSNT trả giá trị true false nên nếu true thì if(true) nó sẽ thực hiện câu lệnh luôn, không cần == true chi nữa. cout << ........... zehanzo (Hồ Minh Chiến) January 10, 2016, 2:05pm #7 trong KTSNT for (int i = 1; i < n; i++) { if (n%i == 0) dem++; } if (dem == 2) return true; k nên làm vậy. sẽ dài dòng. mình cho nó chạy thẳng từ 2 luôn. nó chia hết cho cái nào thì return false. như vậy sẽ nhanh hơn yuh (Huy) January 10, 2016, 2:12pm #8 Đã có nhiều bài nói về kiểm tra số nguyên tố [Wiki] Hàm Kiểm Tra số nguyên tố trong C/C++ writes Số nguyên tố: Số nguyên tố là số tự nhiên chỉ chia hết cho 1 và chính nó. Ngoài ra nó không chia hết cho bất cứ số nào khác. Số 0 và 1 không được coi là số nguyên tố. - Theo wiki Số 2 là số nguyên tố chẵn duy nhất. Cấu trúc ở dạng C: int soNguyenTo(int soA) { if (soA < 2) return 0; for (int i = 2; i <= sqrt((float)soA); i ++) { if (soA%i==0) { return 0; } } return 1; } Định nghĩa : Do người dùng tự tạo. Có thể có nhiều… DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » Hàm Kiểm Tra Số Nguyên To Trong Mảng C Bài 46. Liệt Kê Số Nguyên Tố Trong Mảng 1 Chiều Tìm Số Nguyên Tố Trong Mảng C In Ra Các Số Nguyên Tố Trong Mảng C/C++ Đếm Số Nguyên Tố Có Trong Mảng Một Chiều Các Số Nguyên Bằng C In Ra Các Số Nguyên Tố Trong Mảng C/C++ - Hội Buôn Chuyện Đếm Số Lượng Số Nguyên Tố Có Trong Mảng C - Lập Trình Từ Đầu Kiểm Tra Một Số Có Phải Số Nguyên Tố Trong C Cách Kiểm Tra Số Nguyên Tố Trong Lập Trình C/C++ Kiểm Tra Số Nguyên Tố Trong Mảng Tìm Và In Ra Các Số Nguyên Tố Trong Mảng C++ - 24h68 Viết Hàm In Ra Các Số Nguyên Tố Trong Mảng 1 Chiều A Có N Phần Tử. Thuật Toán Kiếm Tra Số Nguyên Tố Xuất Các Số Nguyên Tố Trong Mảng Bất Kỳ Gồm N Phần Tử Lập Trình C: Tìm Số Nguyến Tố Trong Mảng Số Thực | V1Study