kết quả từ 1 tới 2 trên 2

Help!! Nhập dãy số kiểm tra xem có snt rồi in ra vi trí, giá trị snt min ??

  1. #1
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 356294
    Giới tính: Nam
    Bài gửi
    4

    Unhappy Help!! Nhập dãy số kiểm tra xem có snt rồi in ra vi trí, giá trị snt min ??

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


    int KTSNTMin(int,int);
    int KTSNT(int,int);




    int KTSNTMin(int a[], int n)
    {
    int i,min;
    min=a[0];
    for(i=0;i<n;i++)
    if(min>a[i])
    min=a[i];
    return min;
    }
    int KTSNT(int a[], int n)
    {
    int i,j;
    for(i=0;i<n;i++)
    {
    for(j=2;j<=a[i];j++)
    if(a[i]%j==0) return 0;
    }
    return 1;
    }


    main()
    {
    int n,a[20],i,num;
    printf("Nhap n: "); scanf("%d", &n);
    for(i=0;i<n;i++)
    {
    printf("So thu %d la:", i+1);
    scanf("%d", &a[i]);
    }
    if(KTSNT(a,i))
    num=KTSNTMin(a,i) ;
    printf("So nguyen to nho nhat la: %d \n", num);
    printf("Vi tri cua so do la : %d", i);
    }
    Quick reply to this message Trả lời       


  2. #2
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 56897
    Giới tính: Nam
    Bài gửi
    874

    Reply: Help!! Nhập dãy số kiểm tra xem có snt rồi in ra vi trí, giá trị snt min ??

    Bạn viết hàm kiểm tra có số nguyên tố trong mảng hay không, KTSNT, cũng được, nhưng khi KTSNTMin thì không đúng bởi vì đoạn code đó chỉ là tìm số nhỏ nhất trong mảng mà thôi. Thật ra bạn nên kết hợp 2 cái lại:
    Mã:
    bool isPrime(int x) {
        // kiểm tra x có phải là số nguyên tố hay không.
    }
    
    // Trả ra vị trí snt nhỏ nhất trong mảng. Trả ra -1 nếu không có snt nào.
    int KTSNT(int a[], int n) {
        int pos = -1;    // giả sử mảng không có snt nào.
        for (int i = 0; i < n; ++i)
            // Gọi hàm isPrime(a[i]) ở trên để kiểm tra a[i] có phải là snt không.
            // Nếu là snt thì kiểm tra xem nó có nhỏ hơn snt a[pos] (nếu có) hay không.
            if (isPrime(a[i]) && (pos < 0 || a[i] < a[pos]))
                pos = i;
        return pos;
    }
    
    int main() {
        nhập dữ liệu mảng 'a'.
        int t = KTSNT(a, n);
        if (t == -1)
            printf("Không có snt nào trong mảng.\n");
        else
            printf("SNT nhỏ nhất là %d ở vị trí %d.\n", a[t], t);
        return 0;
    }
    PS: Bạn có thể tham khảo hàm kiểm tra xem 1 số có phải là snt không ở trong box này cho nó tối ưu hơn.
    LCD: 13.3" 1920x1080 IPS
    CPU: Intel i7 - 4700MQ (2.4 GHz - 3.4 GHz)
    GPU: Nvidia GTX 765m with GDDR5 2GB
    RAM: 2x8GB G.Skill 2133
    HDD: Samsung SSD 850 Pro 512 GB
    2 kg.

Nhãn

c++