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

Đề tài: Tìm chữ số nguyên tố lớn nhất

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

    Red face Tìm chữ số nguyên tố lớn nhất

    Cho mình hỏi thuật toán tìm chữ số nguyên tố lớn nhất
    N = 12746 => maxnt = 7
    N = 444 => maxnt = 0

    mình có thuật toán, nhưng chạy ra sai kết quả mất! Các bạn giúp mình giải thuật toán này với
    //Tim chu so nguyen to lon nhat
    int TimChuSoNTMax( int n)
    {
    int Max, m = n;
    while(n!=0)
    {
    if(KiemTraSNT(m%10 ==1))
    Max = m%10; break;
    m = m/10;
    }
    while( n!=0)
    {
    if((KiemTraSNT(n%10)==1) && (Max<n%10))
    Max = n%10;
    n = n/10;
    }
    return Max;
    }
    Bán mông cho ghế - bán lưng cho tường

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

    Bài của bạn đây
    Code:
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int ktnguyento(int &n)
    {
        if(n<2)return 0;
        if(n==2||n==3)return 1;
        for(int i=2; i*i<=n; i++)
                if(n%i==0)
    				return 0;
        return 1;
    }
    int main(){
        int n;int max=0;int tam;
        cout<<"Nhap n: ";cin>>n;
        while(n!=0)
    	{
            tam=n%10;
            if(ktnguyento(tam)==0&&tam>max)
    			max==tam;
            n=n/10;  
    	}
        cout<<max;
        getch();
        return 0;                                
    }

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

    Cảm ơn bạn nhieu nhen!
    Bán mông cho ghế - bán lưng cho tường

  4. #4
    Ngày gia nhập
    11 2011
    Nơi ở
    /home/tancuong
    Bài viết
    32

    Trích dẫn Nguyên bản được gửi bởi ledailoi00 Xem bài viết
    Bài của bạn đây
    Code:
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int ktnguyento(int &n)
    {
        if(n<2)return 0;
        if(n==2||n==3)return 1;
        for(int i=2; i*i<=n; i++)
                if(n%i==0)
    				return 0;
        return 1;
    }
    int main(){
        int n;int max=0;int tam;
        cout<<"Nhap n: ";cin>>n;
        while(n!=0)
    	{
            tam=n%10;
            if(ktnguyento(tam)==0&&tam>max)
    			max==tam;
            n=n/10;  
    	}
        cout<<max;
        getch();
        return 0;                                
    }
    Giải thuật cũng rất hay tuy nhiên theo mình không cần thiết phải kiểm tra như vậy vì các chữ số thật ra là những số từ 0 -> 9 nên chỉ có các số 2, 3, 5, 7 là những số nguyên tố.

    C Code:
    1. #include <stdio.h>
    2. #include <stdlib.h>
    3.  
    4. void main()
    5. {
    6.     int cs(int n);
    7.     int n;
    8.     scanf("%d", &n);
    9.     printf("- Ket qua: %d\n", cs(n));
    10. }
    11.  
    12.  
    13. int cs(int n)
    14. {
    15.     int isPrime[] = { 0, 0, 1, 1, 0, 1, 0, 1, 0, 0 };
    16.     int retval = 0, k;
    17.  
    18.     for (; n != 0; n /= 10) {
    19.         k = n % 10;
    20.         if (isPrime[k] && k > retval)
    21.             retval = k;
    22.     }
    23.  
    24.     return retval;
    25. }

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

  1. Tối ưu Code nhập số nguyên dương rồi đảo ngược số nguyên dương vừa nhập trong C
    Gửi bởi tyrant trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 12
    Bài viết cuối: 21-06-2018, 06:19 PM
  2. 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
  3. 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
  4. 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
  5. Trả lời: 16
    Bài viết cuối: 16-07-2010, 06:44 AM

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