Tìm và in ra các số nguyên tố trong mảng C++

Tìm và in ra các số nguyên tố trong mảng C++-24h68

Tìm và in ra các số nguyên tố trong mảng C++

#include <iostream>
#include <math.h>
using namespace std;
void nhap(int a[], int &n);
void xuat(int a[], int n);
int ktnt(int x);
int lietkent(int a[], int n);
int main()
{
	int a[100], n, m;
	cout<<"Nhap slpt n= "; cin>>n;
	nhap(a,n);
	cout<<"cac phan tu mang A la:\n";
	xuat(a,n);
	cout<<endl;
	cout<<"Cac so nguyen to trong mang: ";
	lietkent(a,n);

}
void nhap(int a[], int &n)
{
	for (int i=0; i<n; i++)
	{
		cout<<"A["<<i<<"]= "; cin>>a[i];
	}
}
void xuat(int a[], int n)
{
	for (int i=0; i<n; i++)
	{
		cout<<a[i]<<" ";
	}
}
int ktnt(int x)
{
    if (x<2) 
        return 0;
    for (int i=2; i<=sqrt(x); i++) 
        if (x%i==0) 
            return 0;
    return 1;
}
int lietkent(int a[], int n)
{
    for (int i=0; i<n; i++)
    if (ktnt(a[i])) cout<<a[i]<<" ";
}

Giải thích 1 chút về Hàm kiểm tra Số nguyên tố:

int ktnt(int x)
{
    if (x<2) 
        return 0;
    for (int i=2; i<=sqrt(x); i++) 
        if (x%i==0) 
            return 0;
    return 1;
}

//i<=sqrt(x) vì số nguyên tố chắc chắn dương và lớn hơn 1 (điều kiện), ví dụ căn 2=1.41 thỏa mãn dương và lớn hơn 1.

Ví dụ: lấy x=5 – là số nguyên tố. Mà chúng ta không lấy căn, thì chương trình chỗ vòng lặp for là:

for (int i=2; i<=5; i++) 
   if (5%2==0) 
            return 0;
    return 1;
  • Lần 1: Điều này không làm thỏa mã điều kiện 5 chia hết cho 2 ( 5%2==0 ) thì nó return 1; – là trả về giá trị cho hàm là số nguyên tố.

Mỗi lần i tăng lên 1 đơn vị nếu điều kiện i<=x còn thỏa mãn.

  • Lần 2: Nó kiểm tra 5%3==0 => Không thỏa mãn => return 1;
  • Lần 3: 5%4==0 => Không thỏa mãn => return 1;
  • Lần 4: 5%5==0 > Thỏa mãn => return 0; Lúc này, hàm sẽ lấy giá trị cuối cùng này và chương trình sẽ không liệt kê/ in ra số 5 mặc dù nó là số nguyên tố.

Trường hợp chúng ta lấy căn bậc 2 của 5 = 2.23: thì vòng lặp sẽ như này:

for (int i=2; i<=2.23; i++) 
   if (5%2==0) 
            return 0;
    return 1;
  • Lần 1: Nó lấy 5%2==0 => Không thỏa mãn => return 1 – trả về giá trị là số nguyên tố. Đúng như định nghĩa số nguyên tố là nó chỉ chia hết cho 1 và chính nó chứ không chia hết cho bất kỳ số nào khác.
  • Lần 2: i=2 và <=2.23 nên nó tăng lên 1 đơn vị (i++). Rồi lại so sánh 5%3==0 => Không thỏa mãn => return 1 – là số nguyên tố.
  • Lần 3: Sau khi i tăng lên 1 đơn vị nữa là i=4 thì lại không <=2.23 nên chương trình dừng tại đây và lấy kết quả của lần 2, chính là return 1 – là số nguyên tố.

Tìm và in ra các số nguyên tố trong mảng C++-24h68
© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
Theo dõi
Thông báo của
的头像-24h68
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận