Trang 4 / 5 FirstFirst 12345 LastLast
Hiển thị kết quả từ 31 đến 40 / 48
  1. #31
    Tham gia
    05-06-2009
    Location
    Tuyên Quang
    Bài viết
    656
    Like
    0
    Thanked 4 Times in 3 Posts
    Cải tiến chút đi: Với mọi i là số nguyên tố thì n*i đều ko phải snt.
    PHP Code:
    Function Pr(N:Integer):Integer;
    Var
     
    Prim:Array of Boolean;
     
    i,j,Count:Integer;
    Begin
     SetLength
    (Prim,N+1);
     
    FillChar(Prim,SizeOf(Prim),True);
     
    A***91;1***93;:=False
     
    Count:=0;
     
    i:=2;
     
    Repeat
      j
    :=2;
      While (
    j<=n) do
       
    Begin
        Inc
    (Dem);
        If 
    Dem=N then Exit(A***91;i***93;);
        
    A***91;i*j***93;:=False;
        
    Inc(j);
       
    End;
     
    Inc(i);
    Until False
    Chưa test thử!!
    Được sửa bởi quangtq lúc 17:32 ngày 22-08-2009

  2. #32
    Tham gia
    13-12-2008
    Location
    Vũng Tàu
    Bài viết
    393
    Like
    0
    Thanked 2 Times in 2 Posts
    nếu n là số ng tố thì k có ước nào của n là số ng tố Cách này nhanh hơn k ?

  3. #33
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    cách của quang chậm hơn đấy ! (đảm bảo luôn) cách mình chỉ 1 vòng lặp for thôi , cách quang 2 vòng lồng nhau
    @c_hằng : chị đang nói bài nào thế . em đang làm bài tìm số nt thứ n .

  4. #34
    Tham gia
    13-12-2008
    Location
    Vũng Tàu
    Bài viết
    393
    Like
    0
    Thanked 2 Times in 2 Posts
    c cũng làm bài tìm số nguyên tố thứ n n <= 1000000

    Code:
    const fi='ngto.inp';
          fo='ngto.out';
    
    var   f:text;
          a:array[1..1000000] of longint;
          n:longint;
    
    procedure inp;
    begin
          assign(f,fi);
          reset(f);
          readln(f,n);
          close(f);
    end;
    
    function nt(k,h:longint):boolean;
    var   i,l:longint;
    begin
          l:=trunc(sqrt(k));
          nt:=false;
          for i:=1 to h do
                if a[i]<=l then
                      begin
                            if ((k mod a[i])=0) then exit;
                      end
                else break;
          nt:=true;
    end;
    
    procedure sol;
    var   i,k,x:longint;
    begin
          a[1]:=2;
          a[2]:=3;
          a[3]:=5;
          i:=3;
          x:=2;
          k:=5;
          repeat
                k:=k+x;
                x:=6-x;
                if nt(k,i) then
                begin
                      inc(i);
                      a[i]:=k;
                end;
          until i=n;
    end;
    
    procedure pri;
    begin
          assign(f,fo);
          rewrite(f);
          write(f,a[n]);
          close(f);
    end;
    
    begin
          inp;
          sol;
          pri;
    end.

  5. #35
    Tham gia
    05-06-2009
    Location
    Tuyên Quang
    Bài viết
    656
    Like
    0
    Thanked 4 Times in 3 Posts
    Tư tưởng là thế nào vậy chị. Em ngại đọc code quá, tại vào được có 1 chút. Sắp phải đi học.

  6. #36
    Tham gia
    13-12-2008
    Location
    Vũng Tàu
    Bài viết
    393
    Like
    0
    Thanked 2 Times in 2 Posts
    - nếu n là số nguyên tố -> k có số nào là ước của n ( trừ 1 và chính nó ) -> k có số nguyên tố nào là ước của n

    - 5 7 11 13 17 ...
    7-5 = 2
    11 - 7 = 4
    13 - 11 = 2
    ...
    -> các số như vậy có thế là số nguyên tố , các số k có quy luật như thế thì k cần kt -> +2 hoặc +4 vào ùi kt

    -tạo 1 mảng a có 3 phần tử ban đầu là các số nguyên tố : 2 3 5 ùi dựa vào quy luật mà tính dần lên và sẽ dùng các phần tử của mảng a này để kt n có phải là số nguyên tố k thay vì phải for i:=2 to trunc(sqrt(n)) do

  7. #37
    Tham gia
    27-05-2008
    Location
    bình định
    Bài viết
    692
    Like
    0
    Thanked 10 Times in 6 Posts
    phân tích ra thừa số nt . chạy nhanh xé gió . kiểu int64
    Code:
    var n:int64;a:array[2..10000] of boolean;i:integer;
    
    begin
    readln(n);
    fillchar(a,sizeof(a),true);
    while n>1 do
     begin
      for i:=2 to 10000 do
       begin
        a[i*2]:=false;
        if a[i]=true then if n mod i= 0 then
         begin
          n:=n div i;
          write(i,'*');
          break
         end;
       end;
     end;
    readln
    end.

  8. #38
    Tham gia
    05-06-2009
    Location
    Tuyên Quang
    Bài viết
    656
    Like
    0
    Thanked 4 Times in 3 Posts
    Chơi QWord đê, cho lớn hơn
    =================================

  9. #39
    Tham gia
    16-05-2009
    Bài viết
    11
    Like
    0
    Thanked 0 Times in 0 Posts
    chỉ cần làm đơn giản thôi mà. Kô cần dài thế đâu.
    var a:array[1..100] of integer;
    i,n,j,d:integer;
    begin
    write('nhap n:');readln(n);
    n:=n div 2;
    for i:=2 to n do
    if n mod i=0 then d:=d+1;
    write('trong day co ',d,' so nguyen to');
    readln;
    end.

    Mình là 1 HS lớp 9 đó nha.
    Đúng thì thanks sai thì thui nha =)) =)) =))

  10. #40
    Tham gia
    13-12-2008
    Location
    Vũng Tàu
    Bài viết
    393
    Like
    0
    Thanked 2 Times in 2 Posts
    bài này là đếm số nguyên tố trong dãy àh =)) . Cho mình hỏi tí nha :
    - bạn chỉ nhập n , k nhập dãy ?
    - n mod i=0 thì n là số ng tố ?
    - for i:=2 to n do , sao k dùng trunc(sqrt(n)) ?
    - bài bạn liên wan j` đến n~ bài trên mà bạn bảo là n~ bài trên k cần dài dòng như thế , bạn vik ngắn hơn đc k ?
    Trước khi post thì cũng phải suy nghĩ & đọc kĩ chứ
    - Bạn lớp 9 thì sao ?

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