Trang 2 / 4 FirstFirst 1234 LastLast
Hiển thị kết quả từ 11 đến 20 / 32
  1. #11
    Tham gia
    21-02-2010
    Bài viết
    2
    Like
    0
    Thanked 1 Time in 1 Post

    Cho ý kiến nha mọi người !

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

    void main()
    {
    int n,i,count=0;

    printf("Ban hay nhap vao 1 so : ");
    scanf("%d",&n);
    for (i=2;i<n;i++)
    {
    if(n%i==0)
    count++;

    }
    if(count==0)
    printf("\n So %d la so nguyen to !!", n);
    else
    printf("\n So %d khong la so nguyen to !!", n);

    }

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


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

    Buồn quá đi ! các bạn sửa giúp mình lỗi bài C này nhé!

    đây là bài toán giải phương trình bậc hai,các bạn xem giúp mình lỗi chỗ nào mà khi chạy chương trình chỉ có 1 nghiệm hà.
    #include<conio.h>
    #include<stdio.h>
    #include<math.h>
    void main()
    {
    clrscr();
    float a,b,c,d,x;
    printf("nhap a:=");
    scanf("%f",&a);
    printf("nhap b:=");
    scanf("%f",&b);
    printf("nhap c:=");
    scanf("%f",&c);
    if(a==0)
    if(b==0)
    printf("ptvn");
    else
    x=-c/b;
    else
    d=(b*b)-(4*a*c);
    if(d<0)
    printf("ptvn");
    else
    {
    (float)x=(float)((-b+sqrt(d))/(2*a));
    (float)x=(float)((-b-sqrt(d))/(2*a));
    }
    printf("x=%f,x=%f",x,x);
    getch();
    }

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


  5. #13
    Tham gia
    15-11-2005
    Location
    Hà Nội
    Bài viết
    696
    Like
    0
    Thanked 14 Times in 12 Posts
    Thử cái này xem (Có cả source và hướng dẫn chi tiết)

    Số nguyên tố | Cách kiểm tra nhanh N có phải là số nguyên tố

    Kiểm tra số nguyên tố

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


  7. #14
    Tham gia
    08-04-2010
    Bài viết
    53
    Like
    0
    Thanked 2 Times in 1 Post
    Quote Được gửi bởi minhhieuit View Post
    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;

    Số 1 không phải là số nguyên tố! Nếu làm theo cách của minhhieuit là sai rồi!

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


  9. #15
    Tham gia
    29-05-2009
    Bài viết
    24
    Like
    0
    Thanked 1 Time in 1 Post
    #include<stdio.h>
    #include<conio.h>
    void main()
    {
    int i,n,k=0;
    printf("nhap n=");
    scanf("%d",&n);
    if(n<2)
    printf("\n Day khong phai la so nguyen to cung khong phai la hop so");
    else
    for(i=2;i<=n;i++)
    if(n%i==0)
    k++;
    if(k>1)
    printf("\n day la hop so");
    else
    printf("\n day la so nguyen to");
    }
    giải thuật của mình rất đơn giản như sau
    n<2:không phải là số nguyên tố cũng không phải hợp số;
    n>=2 mình lấy n chia cho lần lượt các số từ 2 đến n kèm theo 1 biến đếm,khi gặp ước nó sẽ + lên 1,kiểm tra nếu k>1 tức là ngoài chia hết cho chính nó thì nó còn chia hết cho 1 số nào đó(>2).kết luận là hợp số,các số còn lại thì là số ng tố thôi
    cách này đơn giản về mạt giải thuật nhưng máy sẽ phải làm nhiều phép tính(mình nghĩ với cấu hình bây giờ thì điều này không quan trọng)
    Tuy nhiên bạn nào muốn rut gọn thì có thể làm như sau
    n<2 ,mình làm rùi
    n=2,là số ng tố chãn duy nhất
    n%2=0,la hợp số
    n%2=1,chia n cho các số lần lượt từ 2 đến căn n
    như thế viết dài nhưng máy sẽ đỡ "mệt" hơn

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


  11. #16
    Tham gia
    03-11-2008
    Bài viết
    4
    Like
    0
    Thanked 1 Time in 1 Post

    ham kiem tra so nguyen to

    void ktsnt (int n)
    {
    for(int i=2;i<n;i++)
    if(n%i==0)
    return 0;

    return 1;
    }
    //neu dung tra ve 1 sai tra 0
    chuc ban thanh cong

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


  13. #17
    Tham gia
    05-03-2010
    Bài viết
    129
    Like
    2
    Thanked 16 Times in 16 Posts
    Hờ, một số bạn đưa cả 1 là số nguyên tố kìa. Các bạn này nên đọc lại lý thuyết nhá!
    Số 2 là số nguyên tố nhỏ nhất và là chẵn duy nhất.
    Giải thuật thì cứ theo tư tưởng đó mà code thôi, có điều trong code của mình thì mình kiểm tra đến sqrt(n).
    PHP Code:
    #include<iostream>
    #include<math.h>
    using namespace std;

    bool isPrime(long n)
    {
         if(
    n<2) return false;
         else
         {
             for(
    int i=2;i<=(int)sqrt(n);i++)
                if(
    n%i==0) return false;
             return 
    true;
          }
    }

    int main()
    {
        
    long n;
        
    cout<<"Nhap n=";
        
    cin>>n;
        
    isPrime(n)==true?cout<<n<<" la nguyen to!"<<endl:cout<<n<<" ko la nguyen to!"<<endl;
        
    system("pause");

    p/s: Style: VC++

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


  15. #18
    Tham gia
    29-05-2011
    Location
    Hà Nội
    Bài viết
    1,826
    Like
    1,420
    Thanked 47 Times in 42 Posts
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <math.h>
    
    bool NT(int n);
    {
      int i;
      return(true);
      for (i=2;i<=sqrt(n);i++)
        if (n%i==0) 
          {
            return(false);
            exit(1);
          }
    }
    main()
    {
      int n;
      printf("Enter n:");
      scanf("%d",&n);
      if (NT(n))
        printf("%d la so nguyen to !",n);
      else
        printf("%d khong la so nguyen to !",n);
      getch();
    }

  16. #19
    Tham gia
    15-03-2010
    Bài viết
    1,562
    Like
    84
    Thanked 1,571 Times in 860 Posts
    Quote Được gửi bởi congthao82 View Post
    void ktsnt (int n)
    {
    for(int i=2;i<n;i++) // <---- đâu cần phải đi đến gần n
    if(n%i==0)
    return 0;

    return 1;
    }
    //neu dung tra ve 1 sai tra 0
    chuc ban thanh cong
    Bài cũ rích, bới lên giải mà cũng sai. Chỉ cần xét tời khi i*i > n thôi, xét tới gần n thừa nhiều lắm.

    Quote Được gửi bởi khangphamngoc90 View Post
    Hờ, một số bạn đưa cả 1 là số nguyên tố kìa. Các bạn này nên đọc lại lý thuyết nhá!
    Số 2 là số nguyên tố nhỏ nhất và là chẵn duy nhất.
    Giải thuật thì cứ theo tư tưởng đó mà code thôi, có điều trong code của mình thì mình kiểm tra đến sqrt(n).
    PHP Code:
    ...
    #include<math.h>
    using namespace std;

    bool isPrime(long n)
    {
         if(
    n<2) return false;
         else
         {
             for(
    int i=2;i<=(int)sqrt(n);i++)
                if(
    n%i==0) return false;
             return 
    true;
          }
    }

    ... 
    p/s: Style: VC++
    Đã biết 2 là số nguyên tố chẵn duy nhất thì cố tìm thuật toán sao cho chỉ cần chia cho số lẻ trên 2 thôi.

    Quote Được gửi bởi auauau97 View Post
    Code:
    ...
    #include <math.h>
    
    bool NT(int n);
    {
      int i;
      return(true);  // <---- số nào cũng true tuốt ????? 
      for (i=2;i<=sqrt(n);i++)
        if (n%i==0) 
          {
            return(false);
            exit(1);
          }
    }
    ...
    Tính sqrt thì phải lôi hàm này từ thư viện vào.
    Vả lại, nếu mỗi lượt phải tính lại qsrt() thì thà làm i*i < n nhanh hơn.

    for (i=2;i*i<=n;i++), hoặc là

    int j;
    for (i=2,j=sqrt(n);i<=j;i++)

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


  18. #20
    Tham gia
    29-05-2011
    Location
    Hà Nội
    Bài viết
    1,826
    Like
    1,420
    Thanked 47 Times in 42 Posts
    Quote Được gửi bởi megaownage View Post
    Bài cũ rích, bới lên giải mà cũng sai. Chỉ cần xét tời khi i*i > n thôi, xét tới gần n thừa nhiều lắm.



    Đã biết 2 là số nguyên tố chẵn duy nhất thì cố tìm thuật toán sao cho chỉ cần chia cho số lẻ trên 2 thôi.



    Tính sqrt thì phải lôi hàm này từ thư viện vào.
    Vả lại, nếu mỗi lượt phải tính lại qsrt() thì thà làm i*i < n nhanh hơn.

    for (i=2;i*i<=n;i++), hoặc là

    int j;
    for (i=2,j=sqrt(n);i<=j;i++)
    Ừ, nhỉ ?
    thế thì không cần phải khai báo
    #include <math.h> nữa !

Trang 2 / 4 FirstFirst 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
  •