Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Chương trình liệt kê số nguyên tố nhỏ hơn n bằng C lỗi không liệt kê?

  1. #1
    Ngày gia nhập
    09 2011
    Bài viết
    26

    Mặc định Chương trình liệt kê số nguyên tố nhỏ hơn n bằng C lỗi không liệt kê?

    Em mới học C nên còn yếu lắm. Bài kiểm tra 1 số có phải là nguyên tố em làm được nhưng liệt kê làm nó không ra. Mong mấy anh chị hướng dẫn
    Code:
    #include <stdio.h>
    void main()
    {
    	int n,dem=0;
    	printf("\n Nhap n: ");
    	scanf("%d", &n);
    	for (int i=2;i<=n;i++)
    	{
    		for (int j=1;j<=i;j++)
    		{
    	 		if(i%j==0)
    			 	dem=dem+1;
    		}
    		if(dem==2)
    			printf("%d", i);
    	}
    }

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    Bình Dương, Hồ Chí Minh
    Bài viết
    392

    Bài bạn làm cũng tương đối đúng rồi.
    Chỉ có đều sau khi tìm được số nguyên tố đầu tiên thì biến dem=2.
    Và bạn thấy đó, sau đó bạn chưa cập nhật lại biến dem, tức là cho dem trở lại là 0.
    chỉ cần cho dem=0 lại là ok:
    C Code:
    1. #include <stdio.h>
    2. void main()
    3. {
    4.     int n,dem=0;
    5.     printf("\n Nhap n: ");
    6.     scanf("%d", &n);
    7.     for (int i=2;i<=n;i++)
    8.     {
    9.         for (int j=1;j<=i;j++)
    10.         {
    11.             if(i%j==0)
    12.                 dem=dem+1;
    13.         }
    14.         if(dem==2)
    15.             printf("%d, ", i);
    16.         dem=0;
    17.     }
    18. }

  3. #3
    Ngày gia nhập
    09 2011
    Bài viết
    26

    cám ơn anh nhiều! Em hiểu rồi

  4. #4
    Ngày gia nhập
    12 2012
    Nơi ở
    Hà Nội
    Bài viết
    1

    ban nen them dong may dong sau de chuong trinh chay tot hon:
    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    int n=500,dem=0;
    for (int i=1;i<=n;i++)
    {
    for (int j=1;j<=i;j++)
    {
    if(i%j==0)
    dem++;
    }
    if(dem==2)

    printf("%d\t", i);

    dem=0;

    }
    getch();
    }

  5. #5
    Ngày gia nhập
    07 2014
    Bài viết
    1

    đây làm j phải Chương trình liệt kê số nguyên tố nhỏ hơn n mấy bạn
    andyhung

  6. #6
    Ngày gia nhập
    08 2014
    Bài viết
    7

    Mặc định Chương trình liệt kê số nguyên tố nhỏ hơn n bằng C lỗi không liệt kê?

    Em nên làm quen với cách viết hàm con dễ hiểu hơn và đơn giản hơn nhiều :
    Code:
    #include<stdio.h>
    #include<conio.h>
    
    int ktnt(int k)
    {
    	int d =0;
    	for(int i=1;i<=k;i++)
    	{
    		if(k%i==0)
    			d++;
    	}
    	if(d == 2)
    		return 1;
    	return 0;
    }
    
    void lietke(int n)
    {
    	for(int i=2;i<n;i++)
    	{
    		if(ktnt(i) == 1)
    			printf("%d\n",i);
    	}
    }
    
    int main()
    {
    	int n = 20;
    	lietke(n);
    	getch();
    	return 1;
    }
    tham khảo thêm về cách viết hàm e nhé :

    Học lập trình bắt đầu từ đâu ?
    www.laptrinhCcanban.com

  7. #7
    Ngày gia nhập
    01 2013
    Bài viết
    1,476

    ^ Code sai rồi kìa

    i<=sqrt(n) cơ.

  8. #8
    Ngày gia nhập
    04 2014
    Bài viết
    7

    CODE kiểm tra nguyên tố này hay lắm chia sẻ bạn nhé
    #include <iostream>
    #include <conio.h>
    using namespace std;
    bool CheckPrimes(int n)
    {
    if (n < 2) return false;
    if (n == 2) return true;
    if (n%2 == 0) return false;
    if (n == 3) return true;
    if (n % 3 == 0) return false;
    int i = 5;
    int w = 2;
    while (i * i <= n)
    {
    if (n % i == 0)
    {
    return false;
    }
    i += w;
    w = 6 - w;
    }
    return true;
    }

    void main()
    {
    int n;
    cout<<"Nhap so can kiem tra:";
    cin>>n;
    if(CheckPrimes(n)==false)
    cout<<n<<" ko phai so nguyen to!\n";
    else
    cout<<n<<" La So Nguyen To!\n";

    cout<<"Day nguyen to tu 2 den "<<n<<" :\n";
    for(int i=2;i<=n;i++)
    {
    if(CheckPrimes(i)==true)
    cout<<i<<"\t";
    }
    getch();
    }

  9. #9
    Ngày gia nhập
    03 2015
    Bài viết
    3

    //có đôi dòng code lởm để góp ý với bác

    #include <stdio.h>
    #include <conio.h>
    #include <math.h>

    int main()
    {
    int i,n;
    printf ("Nhap N:");
    scanf ("%d",&n);
    if (n==1)
    printf ("%d ko phai la so nguyen to",n);
    else
    {
    for (j=2;i<=n;j++)
    {
    {
    for (i=2;i<=sqrt(j);i++)
    {
    if (j%i==0)
    break;
    }
    if (i<=sqrt(j))
    printf ("%d ko phai la so nguyen to",j);
    else
    printf ("%d la so nguyen to",j);
    }
    getchar();
    }
    }

    return 0;
    }

Các đề tài tương tự

  1. Bài tập C giải thuật nhập vào số nguyên n in ra n số nguyên tố đầu tiên?
    Gửi bởi LTC trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 48
    Bài viết cuối: 25-04-2013, 07:40 PM
  2. 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.
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 19-06-2011, 01:05 PM
  3. Game 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 trên C#?
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 18
    Bài viết cuối: 08-06-2011, 11:12 PM
  4. Bài tập C++ chương trình đổi 1 số nguyên trong hệ thập phân sang hệ fibo và cộng 2 số nguyên được
    Gửi bởi nghiapro512 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 23-01-2011, 02:14 PM
  5. Lập trình C xin code cài đặt thuật toán sàng nguyên tố để liệt kê các số nguyên tố 2->480000
    Gửi bởi ngocdung_088 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 23
    Bài viết cuối: 06-12-2010, 11:53 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn