Trang 5 / 5 FirstFirst ... 2345
Hiển thị kết quả từ 41 đến 48 / 48
  1. #41
    Tham gia
    13-11-2009
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi tung053 View Post
    Mấy anh giúp em giải bài này:
    Nhập vào 1 dãy, xác định xem trong dãy có bao nhiu số nguyên tố ? em ko biết là làm sao để phân biết được số nguyên tố với những số khác.
    Theo lap trình C++ thì mình viết thế này có gì các bác chỉ thêm:


    bool LaSNT(int x)
    {
    ...int d=0;
    ...for(int i=1;i<=x;i++)
    .......if(x%i==0)
    .......d++;
    return(d==2);

    }
    int DemSNT(LIST l)
    {
    ...int d=0;
    ...for(NODE *p=l.pHead;p;p=p->pNext) //for(int i=o;i<n;i++)
    ....if(LaSNT(p->key)==true) //if(LaSNT=true)
    ....d++;
    return d;
    }

  2. #42
    Tham gia
    16-05-2009
    Bài viết
    11
    Like
    0
    Thanked 0 Times in 0 Posts
    Mình xin giải bài toán bằng cách lớp 8 thôi nha
    var a:array[1..100]ò integer;
    i,n,j,d,t:integer;
    begin
    write('nhap n:');readln(n);
    for i:=1 to n do begin
    write('nhap so thu',i,':');readln(a[i]);
    end;
    for i:=1 to n do begin
    for j:=1 to a[i] do
    if a[i] mod j=0 then t:=t+1;
    if t=2 then d:=d+1;
    end;
    write('trong day co ',d,' so nguyen to');
    readln;
    end.
    ---------------------------
    Phân biệt giữa số nguyên tố với những số khác là tìm ước của các số vừa nhập sau đó xét từng số. Nếu số nào chỉ có 2 ước thì d:=d+1;
    sau do in ra là xong ;

  3. #43
    Tham gia
    20-11-2009
    Bài viết
    3
    Like
    0
    Thanked 0 Times in 0 Posts
    Theo mình thấy thì ta dựa vào nguyên tắc của snt thì không cần chạy từ 2 mà là chạy từ 3, sẽ dùng while do hoặc repeat until và
    i:=3, tăng biến i:=i+2 như vậy sẽ tiết kiệm hơn thay vì chạy từ 2 cho đền trunc(sqrt(n)), mình viết thuật kt như sau:
    Function ktnt(n:integer):boolean;
    var a,i,x:integer;
    begin
    if n mod 2=0 then begin ktnt:=false; break; end
    else
    ktnt:=true;
    x:=trunc(sqrt(n));
    if x mod 2=0 then x:=x+1
    else x:=x+2;
    i:=1; a:=x-2;
    repeat
    i:=i+2;
    if (n mod i=0)or(n mod a=0) then
    begin ktnt:=false; break; end
    else a:=a-2;
    until i>=round(x/2)+2;
    Hy vọng được chỉ giáo.

  4. #44
    Tham gia
    06-08-2009
    Bài viết
    15
    Like
    0
    Thanked 0 Times in 0 Posts
    Bài này đơn giản quá, có ai làm bằng "string" không vậy, dùng longint hay int64 thì cùng lắm cũng chỉ có 20 chữ số thôi, sao không làm số lớn hơn nhỉ? Thử xem nào

  5. #45
    Tham gia
    22-01-2010
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    hi` hay vai~! thank you nhiu`

  6. #46
    Tham gia
    13-01-2010
    Bài viết
    78
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi cao_thu View Post
    for i:=2 to trunc(sqrt(n)) do
    if n div i=0 then
    begin
    write('n ko la so nguyen to')
    readln; break;
    end
    else ok:=true;
    end.
    Bác ơi k0j lại đi, hàm trunc(k) nhận giá trị thực nên không bỏ vào câu lệnh For được đâu. phải thay hàm trunc bằng hàm round thì chắc sẽ là đúng hơn

  7. #47
    bigbelly Guest
    Ôi dào, quất nhảy 6 hay chơi rabin-miller là ngon nhất, khỏi nói nhiều!!!
    Nhảy 6: Trừ 2 và 3, số nt chỉ có dạng 6k+/-1.

  8. #48
    Tham gia
    13-01-2010
    Bài viết
    78
    Like
    0
    Thanked 0 Times in 0 Posts
    àk há. Hay nhỉ. Cái này tui chưa bek

Trang 5 / 5 FirstFirst ... 2345

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
  •