Kiểm tra một số có phải là số siêu nguyên tố hay không, số siêu nguyên tố mỗi chữ sô bất kì của nó là số nguyên tố Có thể nêu cách làm cũng được, có c

Kiểm tra một số có phải là số siêu nguyên tố hay không, số siêu nguyên tố mỗi chữ sô bất kì của nó là số nguyên tố
Có thể nêu cách làm cũng được, có cách nào ngắn không thì cho em biết với!

0 bình luận về “Kiểm tra một số có phải là số siêu nguyên tố hay không, số siêu nguyên tố mỗi chữ sô bất kì của nó là số nguyên tố Có thể nêu cách làm cũng được, có c”

  1. uses crt;
    var n,kt:longint;
    function nt(a:longint):boolean;
    var i:longint;
       begin
          i:=2;
          while(a>1)and(a mod i<>0)do inc(i);
          nt:=i=a;
       end;
    begin
    clrscr;
       write(‘n=’);readln(n);
       repeat
          if not(nt(n mod 10)) then kt:=1;
          n:=n div 10;
       until n=0;
       writeln(kt=0);
    readln
    end.

    Bình luận
  2. Đề bài nó có sẵn cách làm luôn rồi đó cậu. Ấy! Mà trả lời như thế thì chết người.

    Muốn biết mỗi chữ số bất kì của nó là số nguyên tố hay không, phải kiểm tra nguyên tố trước, số nguyên tố là số chỉ có một và chính nó,chỉ cần chạy từ 2 đến n/2 và tăng đếm, nếu đếm+1=2 thì đó là số nguyên tố

    Bây giờ, input ta nhập sẽ là dạng xâu đi ha, mỗi kí tự trong xâu nếu nó là số nguyên tố thì tăng dem, nếu dem=độ dài xâu thì trả kết quả true

    Code tham khảo:

     Repeat

     inc(i);

      inc(s[i],k) // k là kí tự xâu s

       if nt(k) then kt:=1 else kt=0; // 0 là false, 1 là true

     Until i=length(s);

    Phải nhớ tạo ctc nguyên tố trước nha

    Khuyến mãi cho cậu nè ^^

     Function nt(n:longint):boolean;

     Var i:longint;

     Begin

     if n<2 then nt:=false else

     begin

      while n mod i<>0 do inc(i); // nếu sai thì cậu đổi giúp tớ thành i mod n<>0 nha, cho chắc thôi

       nt:=i=n;

    end; end;

    và function siêu nguyên tố, sau này có làm chỉ cần khai báo một lần cho gọn, thật ra còn một cách, đó là dùng div mod, cái này khá dễ, cậu lên google nha

    ~

     function snt(n:int64):boolean; 

      begin snt:=true;

     while (nt(n)) do n:=n div 10;

     if n<>0 then snt:=false;

    end;

     end;

    Bình luận

Viết một bình luận