Bài tập C++: Viết chương trình nhập số nguyên dương n. Liệt kê n số nguyên tố đầu tiên

C++: Viết chương trình nhập số nguyên dương n. Xuất in ra màn hình số nguyên tố Liệt kê n số nguyên tố đầu tiên

Số nguyên tố là số chỉ chia hết cho 1 và chính nó. Số nguyên tố chúng ta thường đã quá quen thuộc trong các chương trình toán học phổ thông. Khi xây dựng thuật toán kiểm tra số nguyên tố chúng ta cũng cần phải có chút kinh nghiệm là chỉ kiểm tra ước của số nguyên tố tới căn của số đó là đủ chứ không cần phải kiểm tra tới < n. Dưới đây là vài cách hướng dẫn bài toán in ra n số nguyên tố đầu tiên các bạn có thể tham khảo

Mã:
#include<stdio.h>
#include<conio.h>
#include<math.h>
 
long ktSoNguyenTo(int n)
{
    if(n==0||n==1) return 0;
    long i;
    for(i=2;i<=sqrt(n);i++)
    if(n%i==0) return 0;
    return 1;
}
void inSoNguyenTo()
{   int i=2;
    int n,count=0;
    printf("\n Nhap n=");
    scanf("%d",&n);
    while(count<n)
    {
    if(ktSoNguyenTo(i)==1){
    printf("%5d",i);count++;}
    i++;
    }
}
int main()
{
    inSoNguyenTo();
}
Bài tập kiểm tra số nguyên tố với ngôn ngữ C bạn có thể tham khảo thêm
Mã:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
 
int kiemTraSoNguyenTo(const int a)
{
    int i = 0;
    for(i = 2; i <= (int)sqrt(a); i++)
    {
        if( a % i == 0 || a < 2 && a != 2)
        {
            return 0;
        }
    }
    return 1;
}
int main ()
{
         int N,i, k = 0;
    int* snt = 0;
    printf("\n Nhap vao N:");
    scanf("%d", &N);
 
    snt = (int*)malloc(N*sizeof(int));
    k = 0;
    i = 2;
    while(k < N)
    {
        i++;
        if(kiemTraSoNguyenTo(i) == 1)
        {
            snt[k] = i;
            k++;
        }
    }
 
    printf("\n Bang cac so nguyen to\n");
    for (i = 0; i < k; i++)
    {
        printf("%5d", snt[i]);
    }
    free(snt);
    getch();
    return 0;
}
 
  • Chủ đề
    liet ke so nguyen to so nguyen to
  • taplamhacker

    ♥ Thanh Trâm ♥
    góp ý cho bạn hàm này
    Mã:
    bool KiemTraSNT(int n)
    {
    	if(n<2)
    		return fase;
    	if(n==2 || n == 3)
    		return true;
    	if(n%2==0 || n%3==0)
    		return fase;
    	for(int i = 5 ; i < sqrt(n); i +=2)
    		if(n%i==0)
    			return fase;
    	return true;
    }
     
    Top