Trang 1 / 4 1234 LastLast
Hiển thị kết quả từ 1 đến 10 / 32
  1. #1
    Tham gia
    14-01-2010
    Bài viết
    19
    Like
    0
    Thanked 2 Times in 2 Posts

    kiem tra so n phai la so nguyen to k

    cac ban jup dum minh bai nay nhe,viet chuong trinh bang ham nha.De bai day:cho so nguyen duong n.Kiem tra so nguyen duong n co phai la so nguyen to k?
    Quote Quote

  2. #2
    Tham gia
    21-03-2005
    Location
    Hà Nội
    Bài viết
    435
    Like
    1
    Thanked 5 Times in 5 Posts
    số ước của nó từ 2 tới n%2 bằng 0 (có thể lấy đến n-1 hoặc có người giải theo cách lấy đến sqrt(n) ) ...bạn muốn theo cách nào?

  3. Thành viên Like bài viết này:


  4. #3
    Tham gia
    06-01-2010
    Bài viết
    216
    Like
    0
    Thanked 12 Times in 10 Posts
    cua ban day. tét lai thu nhe
    PHP Code:
    #include <conio.h>
    #include <stdio.h>
    #include <math.h>
    int nguyento(int n)
    {
        
    int i,kt=1;
        if (
    n==|| n==2kt=1;
        for (
    i=2;i<=(int)sqrt(n);i++)
        {
           if (
    n%i==0)
           {
                      
    kt=0;
                      break;
           }
           else 
    kt=1;
        }
        return 
    kt;
    }
    int main()
    {
        
    int n;
        
    printf ("Moi nhap n: ");
        
    scanf ("%d",&n);
        if (
    nguyento(n)) printf ("%d la so nguyen to!",n);
        else 
    printf ("%d khong la so nguyen to!",n);
        
    getch();
        return 
    0;

    Được sửa bởi minhhieuit lúc 19:32 ngày 19-01-2010

  5. 2 thành viên Like bài viết này:


  6. #4
    Tham gia
    29-06-2007
    Bài viết
    6
    Like
    0
    Thanked 1 Time in 1 Post

    kiem tra so n phai la so nguyen to

    #include<stdio.h>
    #include<conio.h>
    int nt(int n)
    {
    int dem=0;
    for(int i=2;i<n;i++)
    if(n%i==0)
    dem++;
    return dem;
    }
    void main(){
    int n;
    printf("Nhap vao mot so nguyen duong: ");
    scanf("%d",&n);
    if(nt(n)==0)
    printf("so vua nhap la so nguyen to");
    else
    printf("So vua nhap khong la so nguyen to");
    getch();
    }

  7. Thành viên Like bài viết này:


  8. #5
    Tham gia
    16-08-2007
    Bài viết
    5
    Like
    0
    Thanked 1 Time in 1 Post
    Anh minhhieu giải thích rõ cho em đc ko ạ:S

  9. Thành viên Like bài viết này:


  10. #6
    Tham gia
    06-01-2010
    Bài viết
    216
    Like
    0
    Thanked 12 Times in 10 Posts
    cai nay don gian ma ban
    ma minh la sv nam dau neu ma dung ra thi minh cung bang tuoi hoac it tuoi hon ban do.
    PHP Code:
    for (i=2;i<(int)sqrt(n);i++) 
    day la thuat toan de kiem tra n co phai la so nguyen to khong ban ak.
    nhu ta da biet, so nguyen to la so ma chi chia het cho chinh no va 1.
    minh bat dau cho mot bien i chay tu 2 den can bac hai cua n; neu ma n chia het cho i thi n khong la so nguyen to. phai chay tu i=2 vi neu chay tu i=1 thi n se chia het cho i va gia tri tra ve khong con dung nua. dung ra thi i chay tu 2 den n nhung ma ta chi can kiem chay den can bac hai cua n hoac chay den n/2 la duoc ban ak.
    Được sửa bởi minhhieuit lúc 19:33 ngày 19-01-2010

  11. Thành viên Like bài viết này:


  12. #7
    Tham gia
    14-01-2010
    Bài viết
    19
    Like
    0
    Thanked 2 Times in 2 Posts

    Buồn quá đi ! cho minh hoi bai so nguyen to

    #include<conio.h>
    #include<stdio.h>
    #include<math.h>
    int kiemtra(int n);
    void main()
    {
    int n;
    printf("\n nhap n:=");
    scanf("%d",&n);
    printf("%d",kiemtra(n));
    getch();
    }
    int kiemtra(int n)
    {
    int i;
    for(i=2;i<=sqrt (n) ;i++)
    {
    if(n%i==0)
    printf("%d la so nguyen to",n);
    else
    printf("%d khong la so nguyen to",n);
    break;
    return 0;
    }
    //ban Hieu oi sao phai co dieu kien if(n==1||n==2),k co dc k va k dung lenh break ma dung lenh khac dc k?bai cua minh sai j?chua jup minh nhe

  13. Thành viên Like bài viết này:


  14. #8
    Tham gia
    22-02-2007
    Bài viết
    81
    Like
    0
    Thanked 1 Time in 1 Post
    giải thuật cũng đơn giản thui mà, ko cần phải for rùi break cho mất công.
    đầu tiên kiểm tra số n có phải là 1 trong các số sau (1,2,3,5) đây là các số nguyên tố nhỏ nhất.
    Nếu n không phải là 1 trong các số đó thì sẽ lần lượt kiểm tra coi n có chia hết cho 2, cho 3, cho 5 ko, nếu 1 trong 3 trường hợp xảy ra thì n không phải là số nguyên tố, ngược lại thì n là số nguyên tố.
    1 số chắc chắn sẽ chia hết cho chính nó và 1 rùi do vậy ta chỉ cần kiểm tra thêm nó có chia hết cho số khác hay ko mà ở đây 2,3 và 5 là 3 ước số chia nhỏ nhất.

  15. Thành viên Like bài viết này:


  16. #9
    Tham gia
    21-03-2005
    Location
    Hà Nội
    Bài viết
    435
    Like
    1
    Thanked 5 Times in 5 Posts

    Tệ thật !

    Quote Được gửi bởi tpdung View Post
    giải thuật cũng đơn giản thui mà, ko cần phải for rùi break cho mất công.
    đầu tiên kiểm tra số n có phải là 1 trong các số sau (1,2,3,5) đây là các số nguyên tố nhỏ nhất.
    Nếu n không phải là 1 trong các số đó thì sẽ lần lượt kiểm tra coi n có chia hết cho 2, cho 3, cho 5 ko, nếu 1 trong 3 trường hợp xảy ra thì n không phải là số nguyên tố, ngược lại thì n là số nguyên tố.
    1 số chắc chắn sẽ chia hết cho chính nó và 1 rùi do vậy ta chỉ cần kiểm tra thêm nó có chia hết cho số khác hay ko mà ở đây 2,3 và 5 là 3 ước số chia nhỏ nhất.
    bạn nhầm rồi, nếu làm thế thì bạn sẽ làm đến bao giờ? thử nhé, bạn chưa có số 7 => không kiểm tra được 49, chưa có 11 nên không kiểm tra được 121,...vậy bạn định cho tập hợp ban đầu gồm các số nào?

  17. Thành viên Like bài viết này:


  18. #10
    Tham gia
    06-01-2010
    Bài viết
    216
    Like
    0
    Thanked 12 Times in 10 Posts
    bạn noname1990
    Cái sai đầu tiên của bạn là:
    PHP Code:
    if(n%i==0)
    printf("%d la so nguyen to",n); 
    nếu điều kiện trên xảy ra thì n không là số nguyên tố bạn à.
    Với chương trình của bạn khi nhập vào 1 và 2 sẽ không cho kết quả. đa số chương trình các bạn viết khi thử với 1 và 2 kết quả bị sai vì thế mình đặt điều kiện mặc định cho 1 và 2 là số nguyên tố.
    Trong hàm kiểm tra số nguyên tố theo mình nghĩ thì nên dùng lệnh
    PHP Code:
    break; 
    vì một khi
    PHP Code:
    n%i==0
    thì chắc chắn n không là số nguyên tố rồi nên dừng luôn vòng lặp ở đó luôn bạn à.
    Của bạn đây:
    PHP Code:
    #include<conio.h>
    #include<stdio.h>
    #include<math.h>
    int kiemtra(int n)
    void main()
    {
        
    int n;
        
    printf("\nnhap n:=");
        
    scanf("%d",&n);
        
    kiemtra(n);
        
    getch();
    }
    int kiemtra(int n)
    {
        
    int i;
        if (
    n==|| n==||n==3printf("%d la so nguyen to",n);
        for(
    i=2;i<=sqrt (n) ;i++)
        {
            if(
    n%i==0)
            {
                      
    printf("%d khong la so nguyen to",n);
                      break;
            }
            else
            
    printf("%d la so nguyen to",n);
        }

    không hiểu sao mình nhập n=3 nó không chạy ấy. thế nên mình đặt 3 vào luôn. để mình xem lại xem sao?
    Được sửa bởi minhhieuit lúc 17:04 ngày 19-01-2010

  19. Thành viên Like bài viết này:


Trang 1 / 4 1234 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • 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
  •