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

Đề tài: giúp mình tìm lỗi bài tìm số nguyên tố thỏa mãn những điều kiện sau

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

    Mặc định giúp mình tìm lỗi bài tìm số nguyên tố thỏa mãn những điều kiện sau

    đề bài: Tìm tất cả các số nguyên tố nhỏ hơn 100000 là số thuận nghịch, tổng các chữ số trong số ấy cũng là 1 chữ số nguyên tố.
    bài code của mình không biết lỗi chỗ nào, mọi người giúp minh với!
    Code:
    #include<iostream.h>
    long ngto(long n)
    {
    	long i;
    	if (n==2) return 1;
    	for (i=2; i<=n/2; i++)
    	if (n%i==0) return 0;
    	return 1;
    }
    
    long dao(long a)
    {
    	long m=0;
    	while (a>0)
    	{
    		m=m*10+m%10;
    		a=a/10;
    	}
    	return m;
    }
    
    long tong(long b)
    {
    	long h=0;
    	while (b>0)
    	{
    		h=h+b%10;
    		b=b/10;
    	}
    	return h;
    }
    
    main()
    {
    	long x, dem=0;
    	for (x=2;x<=100000;x++)
    	{
    	if ( ngto(x)==1 && dao(x)==x && ngto(tong(x))==1)
    	{
    	    cout << x <<endl;
    		dem++;
    	}
    	}
    	cout<<"co "<<dem<<" so thoa man\n";
    }

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    hàm dao của bạn ko pít làm gì nhưng nó luôn trả về giá trị 0
    HT117-5277

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

    Trích dẫn Nguyên bản được gửi bởi ducvietphan Xem bài viết
    đề bài: Tìm tất cả các số nguyên tố nhỏ hơn 100000 là số thuận nghịch, tổng các chữ số trong số ấy cũng là 1 chữ số nguyên tố.
    bài code của mình không biết lỗi chỗ nào, mọi người giúp minh với!
    Code:
    #include<iostream.h>
    long ngto(long n)
    {
    	long i;
    	if (n==2) return 1;
    	for (i=2; i<=n/2; i++)
    	if (n%i==0) return 0;
    	return 1;
    }
    
    long dao(long a)
    {
    	long m=0;
    	while (a>0)
    	{
    		m=m*10+m%10;
    		a=a/10;
    	}
    	return m;
    }
    
    long tong(long b)
    {
    	long h=0;
    	while (b>0)
    	{
    		h=h+b%10;
    		b=b/10;
    	}
    	return h;
    }
    
    main()
    {
    	long x, dem=0;
    	for (x=2;x<=100000;x++)
    	{
    	if ( ngto(x)==1 && dao(x)==x && ngto(tong(x))==1)
    	{
    	    cout << x <<endl;
    		dem++;
    	}
    	}
    	cout<<"co "<<dem<<" so thoa man\n";
    }
    Sai ở đây nè: m=m*10+m%10; sửa lại là m=m*10 + a%10;

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

    Trích dẫn Nguyên bản được gửi bởi treatmaster Xem bài viết
    hàm dao của bạn ko pít làm gì nhưng nó luôn trả về giá trị 0
    hàm dao để thỏa mãn điều kiện là số thuận nghịch đó.

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

    Trích dẫn Nguyên bản được gửi bởi wuanwu Xem bài viết
    Sai ở đây nè: m=m*10+m%10; sửa lại là m=m*10 + a%10;
    chết mất vậy mà mình tìm mãi không ra, mắt có vấn đề thật rồi thanks mọi người nhiều nha!
    mà mình còn mấy vấn đề thắc mắc:
    +ở hàm main điều kiện
    Code:
     if ( ngto(x)==1 && dao(x)==x && ngto(tong(x))==1)
    có thể viết thành
    Code:
     if ( ngto(x) && dao(x)==x && ngto(tong(x))==1)
    đều được. để ngto(x)==1 nghĩa là ở hàm ngto nếu x là số ngto thì trả lại cho hàm giá trị 1, ko thì trả lại giá trị 0 nên để điều kiện ngto(x)==1 để chỉ lấy các số nguyên tố, nhưng để ngto(x) cũng đúng, mình nghĩ như thế nó sẽ in ra cả những số x có giá trị ngto(x)==0 không phải số nguyên tố chứ nhỉ
    +nếu để điều kiện là if ( ngto(x) ) nó vẫn in ra tất cả các số nguyên tố, không viết ngto(x)==1 thì làm sao in ra được nhỉ, nó sẽ in ra cả các số không phải số nguyên tố chứ nhỉ.
    +để diều kiện là if ( dao(x)==x && ngto(tong(x))==1) lẽ ra phải được chứ nhỉ, tại sao không được?
    +kiểu số nguyên int có dải giá trị từ -32768-->32767 nhưng x có giá trị đến 100000 mà để kiểu int vẫn được là sao nhỉ, không chỉ ở bài này mà còn ở các bài khác nữa.
    +mình mới học c++ nên còn rất non mong mọi người chỉ giáo! thanks mọi người rất nhiều!

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

  1. Lập trình C++ giúp em bài: đặc tả cộng hai số nguyên dương lớn
    Gửi bởi phamhoangphu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 11-04-2012, 01:45 AM
  2. Liệt kê các số nguyên tố nhỏ hơn n có tổng bằng S cho trước. Giúp mình tìm lỗi sai
    Gửi bởi van.duc0409 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 25-02-2011, 08:31 PM
  3. bài tập kiểm tra số nguyên tố. Giúp em với?
    Gửi bởi Vaanres trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 12
    Bài viết cuối: 10-10-2009, 08:45 AM
  4. Giúp giùm mình bài phân tích số nguyên dương thành tích thừa số nguyên tố
    Gửi bởi nguyenminhdanh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 30-09-2008, 07:53 PM
  5. Giúp em một số bài về số nguyên tố
    Gửi bởi duc30121989 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 9
    Bài viết cuối: 21-04-2008, 08:50 PM

Tags của đề tài này

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