Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 17
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    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:
    Mã:
    #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("
    nhap so nguyen: ");
    	scanf("%d",&ia);
    	NGT(ia,n);
    	if(n==0)
    	printf("
    %d khong phai la so nguyen to. ",ia);
    	for(int y=ia-1;y>2;--y)
    		{
    			NGT(y,n);
                            if(n==0);
    			printf("
    so nguyen to gan nhat la: %d",y);
    			break;
    		}
    
    	if(n==1)
    	printf("
    %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 tham gia
    Sep 2015
    Bài viết
    0
    Chú ý các phần có đánh dấu nhé bạn, chúc bạn học tốt!


    Mã:
    #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;        return;        }    }        n=1;}void main(){    clrscr();    int ia,n;    printf("
    nhap so nguyen: ");    scanf("%d",&ia);    NGT(ia,n);    if(n==0)    printf("
    %d khong phai la so nguyen to. ",ia);    for(int y=ia-1;y>2;--y)        {            NGT(y,n);                        if(n==1)                                 ////////////            printf("
    so nguyen to gan nhat la: %d",y);            break;        }     if(n==1)    printf("
    %d la so nguyen to. ",ia );    getch();}

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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
    Mã:
    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("
    Nhap n = ");
    	scanf("%d",&n);
    	for(int i=2;i<n;i++)
    	{
    		if(ktnt(i)==1) printf("%d\t",i);
    	}
    	getch();
    }

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Uh, dễ. Vậy mà mấy cái code trên đều thiếu chặt chẽ. Xem qua code này nhé:

    Mã:
    #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;}

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Uh, dễ. Vậy mà mấy cái code trên đều thiếu chặt chẽ. Xem qua code này nhé:
    Mã:
    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 tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi trubavuong
    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 tham gia
    Sep 2015
    Bài viết
    0
    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 tham gia
    Sep 2015
    Bài viết
    0
    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 tham gia
    Sep 2015
    Bài viết
    0
    ủ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-

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Lỗi thế nào được, chạy thử chưa hay đoán mò ???????

 

 
Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •