Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 16 kết quả

Đề tài: Kiểm tra số nguyên tố

  1. #1
    Ngày gia nhập
    11 2008
    Bài viết
    116

    Wink Kiểm tra số nguyên tố

    đề: nhập số nguyên, kiểm tra xem số đó có phải là số nguyên tố hay ko ? nếu ko thì in ra số nguyên nhỏ hơn đứng gần nó.
    code của em:
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    void NGT(int ia,int &n);
    void NGT(int ia,int &n)
    {
    	for(int i=2;i<sqrt(ia);i++)
    	{
    		if(ia%i==0)
    		{
    		n=0;
    		break;
    		}
    		else
    		{
    		n=1;
    		break;
    		}
    	}
    
    }
    void main()
    {
    	clrscr();
    	int ia,n;
    	printf("\nnhap so nguyen: ");
    	scanf("%d",&ia);
    	NGT(ia,n);
    	if(n==0)
    	printf("\n%d khong phai la so nguyen to. ",ia);
    	for(int y=ia-1;y>2;--y)
    		{
    			NGT(y,n);
                            if(n==0);
    			printf("\nso nguyen to gan nhat la: %d",y);
    			break;
    		}
    
    	if(n==1)
    	printf("\n%d la so nguyen to. ",ia );
    	getch();
    }
    Cho em hỏi sao nó ra kết quả kì quá. Nhập 14 thì nó ra cả 3 câu printf.
    Còn nhập 13 thì nó nói 12 là số nguyên tố.
    Thank

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Chú ý các phần có đánh dấu nhé bạn, chúc bạn học tốt!

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4. void NGT(int ia,int &n);
    5. void NGT(int ia,int &n)   ////////////
    6. {
    7.     for(int i=2;i<=sqrt(ia);i++)
    8.     {
    9.         if(ia%i==0)
    10.         {
    11.         n=0;
    12.         return;
    13.         }
    14.     }
    15.         n=1;
    16. }
    17. void main()
    18. {
    19.     clrscr();
    20.     int ia,n;
    21.     printf("\nnhap so nguyen: ");
    22.     scanf("%d",&ia);
    23.     NGT(ia,n);
    24.     if(n==0)
    25.     printf("\n%d khong phai la so nguyen to. ",ia);
    26.     for(int y=ia-1;y>2;--y)
    27.         {
    28.             NGT(y,n);
    29.                         if(n==1)                                 ////////////
    30.             printf("\nso nguyen to gan nhat la: %d",y);
    31.             break;
    32.         }
    33.  
    34.     if(n==1)
    35.     printf("\n%d la so nguyen to. ",ia );
    36.     getch();
    37. }

  3. #3
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Mặc định 1

    Cái này cũng không khó lém !

    In tất cả số nguyên tố nhỏ hơn số nhập vào từ bàn phím
    Code:
    Code
    #include <stdio.h>
    #include <conio.h>
    #include <math.h>
    int ktnt(int n)
    {
    	int k=1;
    	for(int i=2;i<=sqrt(n);i++)
    	{
    		if(n%i==0)
    		{
    			k=0;break;
    		}
    	}
    	return k;
    }
    main()
    {
    	int n;
    	printf("\nNhap n = ");
    	scanf("%d",&n);
    	for(int i=2;i<n;i++)
    	{
    		if(ktnt(i)==1) printf("%d\t",i);
    	}
    	getch();
    }
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 20-01-2009 lúc 09:47 PM. Lý do: 1

  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Uh, dễ. Vậy mà mấy cái code trên đều thiếu chặt chẽ. Xem qua code này nhé:
    C Code:
    1. #include <stdio.h>
    2. #include <math.h>
    3.  
    4. int Ktnt(int n)
    5. {
    6.     if(n<1) return 0;
    7.     int t=sqrt(n);
    8.     for (int i=2; i<=t; i++)
    9.         if (n%i==0) return 0;
    10.     return 1;
    11. }
    12.  
    13. int main()
    14. {
    15.     if (Ktnt(9)) printf("OK");
    16.     else printf("not OK");
    17.     return 0;
    18. }

  5. #5
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Uh, dễ. Vậy mà mấy cái code trên đều thiếu chặt chẽ. Xem qua code này nhé:
    Code:
    C Code: 	
    #include <stdio.h>
    #include <math.h>
    
    int Ktnt(int n)
    {
        if(n<1) return 0;
        int t=sqrt(n);
        for (int i=2; i<=t; i++)
            if (n%i==0) return 0;
        return 1;
    }
    
    int main()
    {
        if (Ktnt(9)) printf("OK");
        else printf("not OK");
        return 0;
    }
    Bạn viết thế này mình cho là không đúng. Thế này nhé, nếu n=1 thì sao? Dĩ nhiên 1%2 != 0 ---> return 1 ----> n=1 là số nguyên tố ! Vô lý.
    Còn nữa,
    if (Ktnt(9)) printf("OK");
    là gì thế, mình không hiểu? Tại sao lại có 9 ? Phải là số tự nhiên bất kỳ chứ?
    Còn bài của mình là in ra tất cả các số nguyên tố nhỏ hơn n nên trong hàm Ktnt(int n) không cần xét trường hợp n<2 !!!

  6. #6
    Ngày gia nhập
    01 2009
    Bài viết
    64

    Mặc định Kiểm tra số nguyên tố

    Trích dẫn Nguyên bản được gửi bởi trubavuong Xem bài viết
    Bạn viết thế này mình cho là không đúng. Thế này nhé, nếu n=1 thì sao? Dĩ nhiên 1%2 != 0 ---> return 1 ----> n=1 là số nguyên tố ! Vô lý.
    Còn nữa,
    là gì thế, mình không hiểu? Tại sao lại có 9 ? Phải là số tự nhiên bất kỳ chứ?
    Còn bài của mình là in ra tất cả các số nguyên tố nhỏ hơn n nên trong hàm Ktnt(int n) không cần xét trường hợp n<2 !!!
    híc híc,cậu ơi 9 là số họ cần kiểm tra đấy,cậu đọc vậy không hiểu sao,họ thích thay số mấy mà chẳng được,chỉ là đi thử thôi,đỡ mất công nhập chứ sao,điều cơ bản như vậy mà....

  7. #7
    Ngày gia nhập
    01 2009
    Nơi ở
    Hà Nội
    Bài viết
    205

    Chẳng lẽ mình lại không đoán ra sao? Thế nhưng mình thấy không ăn khớp. Đáng lẽ để số tự nhiên bất kỳ thì sẽ hay hơn. Còn nếu bạn ấy muốn thay số vào để thử thì tốt nhất nên tự thử, còn đã shared cho anh em thì nên viết tổng quát cho hợp lý hơn.
    Chứ còn nếu muốn thử thuật giải thì cũng chẳng cần phải làm hàm con thế để làm gì.
    Còn bạn cũng đừng cho mình là tiên tri biết được tôi có hiểu thật hay không!

  8. #8
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Rồi nó khác 1 vậy sửa điều kiện nhỏ hơn 2, cảm ơn.

    Tôi viết cái hàm kiểm tra số nguên tố để cho các cậu xem chứ tôi làm bài gì mà cậu vặn vẹo cái hàm main(), cái đó nếu cậu vặn thì tôi cũng chịu.

  9. #9
    Ngày gia nhập
    02 2008
    Bài viết
    15

    ủa sao die vậy !!!

    @Reply: Die tại host nó die chớ, mà không nói chuyện ở đây đc đâu, thành spam đấy. :d bài này đành phải xóa. -QH-
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 21-01-2009 lúc 11:20 AM.
    I dlatego lubię mówić z tobą !!!

  10. #10
    Ngày gia nhập
    05 2007
    Bài viết
    2

    Các bạn thử áp dụng cho trường hợp số đó là 3 xem sao! Vẫn bị lỗi, trong khi 3 là số nguyên tố

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