Trang 3 / 4 FirstFirst 1234 LastLast
Hiển thị kết quả từ 21 đến 30 / 32
  1. #21
    Tham gia
    05-03-2010
    Bài viết
    129
    Like
    2
    Thanked 16 Times in 16 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++)
    Theo bạn thì thuật toán như thế nào là tối ưu, bài này có cần thiết phải như thế không? Mình thấy bạn nào đó xới lại bài này nhưng ko có nghĩa là bài cũ, bài cũ với ai đã tham gia lâu, còn những mem chưa tham gia hoặc chưa học ngôn ngữ lập trình thì còn mới lắm bạn ạ.

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


  3. #22
    Tham gia
    15-06-2011
    Bài viết
    30
    Like
    1
    Thanked 13 Times in 11 Posts
    PHP Code:
    ham nay kha nhanh khi kiem tra voi 1 so la so kha lon nay ban:
    int Is_prime(int x)
    {
        if(
    x<=1)
            return 
    0;
        if(
    x==2||x==3||x==5||x==7)
            
    rerturn 1;
        if(
    x%2==0||x%3==0||x%5==0||x%7==0)
           return 
    0;
       for(
    int i=5;i<=(int)sqrt((long)x);i+=2)
          if(
    i%2==0)
       return 
    0;
       return 
    1;
    }
    neu khong chay duoc thi trong vong lap for ban sua lai la for(int i=5;i<=n/2;i+=2)
    la chay ong dinh ham sqrt trong c va c++ bat buoc bien phai la kieu long nen ban co the ep kieu truoc
    thuat toan tren dua vao dinh nghiaso nguyen to la so chi chia het cho 1 va chinh no ne viec kiem tra chia het cho 2,3,5,7 se nhanh hon la su dung vong lap for(; ;)
    chuc vui 

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


  5. #23
    Tham gia
    15-06-2011
    Bài viết
    30
    Like
    1
    Thanked 13 Times in 11 Posts
    PHP Code:
    ban xem lai cach giai pt bac hai di:
    #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");//neu c cung bang 0 thi phuong trinh co vo so nghiem chu
    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));//phai dung 2 bien de luu hai ket qua khac nhau
    (float)x=(float)((-b-sqrt(d))/(2*a));
    }
    printf("x=%f,x=%f",x,x);
    getch();
    }
    co the viet noi dung ham tinh toan nhu the nay
    void GPT
    (float a,float b,float c)
    {
      if(
    a==0)
      {
         if(
    b==0)
          if(
    c==0)
             
    printf("\nphuong trinh co vo so nghiem");
          else
             
    printf("\nphuong trinh co nghiem don x=:\t%f",-c\b); 
       }
       else 
        {
           
    long D=(longb*b-4*a*c;
           if(
    d<0)
             
    printf("\nphuong trinh vo nghiem\n");
           else
           {
              if(
    d==0)
                
    printf("\nphuong trinh co nghiem kep x=:\t%.3g",(-b/2/a));
              else
               {
                  
    printf("\nphuong trinh co hai nghiem phan biet:\n");
                  
    printf("x1=:\t%.3g",((-b+sqrt(D))/2/a));
                  
    printf("x2=:\t%.3g",((-b-sqrt(D))/2/a));
               }
          }


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


  7. #24
    Tham gia
    24-08-2011
    Bài viết
    29
    Like
    0
    Thanked 1 Time in 1 Post
    thanks bài viết bác nhưng này khó thực hành quá hà

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


  9. #25
    Tham gia
    27-08-2011
    Bài viết
    83
    Like
    0
    Thanked 4 Times in 4 Posts
    này rất khó thực hành lắm

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


  11. #26
    Tham gia
    05-03-2010
    Bài viết
    129
    Like
    2
    Thanked 16 Times in 16 Posts
    Quote Được gửi bởi thuonghieuvn View Post
    này rất khó thực hành lắm
    Bài nào khó thực hành vậy bạn? Có khó khăn gì mọi người sẽ giúp nếu ai đó có khả năng. hì hì
    Cố gắng lên bạn!

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


  13. #27
    Tham gia
    15-06-2011
    Bài viết
    30
    Like
    1
    Thanked 13 Times in 11 Posts
    thuật toán của bạn trên trả về không đúng kiểu. nếu làm như bạn thì nên khai báo hàm kiểu void hơn nữa chưng trinh vẫn chạy sai. khi kiểm tra xong if(n==...) thì chương trình vẫn nhảy xuỗng lệnh for để kiêm tra tiếp mà không thoát:
    code:
    int nt(int n)//nếu trong c++ thì khai báo là const int &n để tăng tốc chương trình
    {
    if(n<=1)
    return 0;//nếu không thỏa mãn thì thoats luôn
    if(n==2||n==3||n==5)
    return 1;
    if(n%2==0||n%3==0||n%5==0)
    return 0;
    for(int i=3;i<=(int) sqrt((long)n);i+=2)
    if(n%i==0)
    return 0;
    return 1;
    }
    kiểu bollean:
    bool nt(int n)
    {
    if(n<=1)
    return false;
    .....tương tự trên. thay 1 bởi tru và 0 bởi false là đc
    return true;
    }

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


  15. #28
    Tham gia
    12-09-2011
    Bài viết
    14
    Like
    1
    Thanked 6 Times in 6 Posts
    Quote Được gửi bởi minhhieuit;198***2
    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;

    baì viết rất tốt thanks

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


  17. #29
    Tham gia
    06-01-2010
    Bài viết
    216
    Like
    0
    Thanked 12 Times in 10 Posts
    Quote Được gửi bởi phuongnam0806 View Post
    làm theo cách của bạn này mình thấy rễ hơn các cách khác
    Hì hì, vì mình hướng tới cho những người mới vào lập trình mà. Với lại ngôn ngữ C là ngôn ngữ mình đánh giá là cao nhất. Nó vừa dễ hiểu, vừa căn bản!

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


  19. #30
    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 minhhieuit View Post
    Hì hì, vì mình hướng tới cho những người mới vào lập trình mà. Với lại ngôn ngữ C là ngôn ngữ mình đánh giá là cao nhất. Nó vừa dễ hiểu, vừa căn bản!
    Dễ hiểu và căn bản thì mình nghĩ nó không= pascal đâu bạn ạ !!!
    học pascal dễ hơn C nhiều
    C và C++ thì thế mạnh của nó là phần con trỏ, rất uyển chuyển...

Trang 3 / 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
  •