-
好吧,讓我們分解一下。
將數 n 分解為質因數的時間複雜度的上限為 o(n。 按照目前計算機的效能,如果想在時限內求解,n大概小於一百萬,這樣最大數字n只能是10 14。 這個範圍是 int64 完全可以管理的。
如果 int64 無法處理,那麼即使精度很高,也無法在時限內求解這個數字。
-
如果你的 n 足夠大,那麼它的因子和必須比他的大得多,所以它將越界 (maxlongint=21474843647) ......所以你的 n 不夠大,所以用樓上的那個來解決......
-
描述:正整數的鍵盤輸入(1 個示例輸入:
示例輸出:包括
int main()
if(s==1)break;
if(s!=1)
elseelse i++;
printf("*%ld",n);}
return 0;}
-
var n:longint;
procedure zys(x:longint);分解因子過程。
var i,k:longint;
begink:=1;
while x>1 do
begini:=0;inc(k);
while x mod k=0 do
begininc(i);
x:=x div k;
end;如果 I>1,則列印係數。
if x=1 then write(k,'^',i)
else write(k,'^',i,'*')
else if i=1 then
if x=1 then write(k)
else write(k,'*');
end;end;
開始主程式。
read(n);
zys(n);呼叫該過程。
end.
-
我會給你乙個我以前做過的問題,它奏效了。
求 x y 之間數字的因式分解。
program yinshu;
vara,b,n,c,x,y:integer;
beginreadln(x);
readln(y);
for a:=x to y do
beginb:=2;
n:=0;c:=a;
write(a,'=');
repeat
if c mod b=0
thenbegin
c:=c div b;
if n=0
thenwrite(b)
elsewrite('*',b);
n:=1;endelse
b:=b+1;
until c=1;
writeln;
end;readln;
end.
-
1. 新增乙個字串 s 來儲存輸出結果。
2,write(i,'*');更改為 s:=s+str(i)+'*';
3,最後輸出:write(copy(s, 1, length(s)-1));
-
你先輸出乙個。
if n mod i==0 write(i);
b:=n div i;
while n>=i do begin
while n mod i ==0 do beginwrite(‘*i);
n:=n div i;
end;我已經很久沒有寫pascal了,你確定判斷是=not==嗎?
當然,無論是在語法上還是在功能上,但實際上......C的應用比Pascal強大多了,如果你想學習的話建議你先學習Pascal,然後再學習C
Pascal編譯系統是乙個系統軟體。 Pascal 是第一種結構化程式設計語言,具有嚴格的語法、清晰的層次結構、易於編寫和可讀的程式。 Pascal語言廣泛應用於各種軟體中,程式分為名稱(程式後自提)、設定(var後定義)、開始(begin)、程式(body)、read(讀read ln)、結束(end),結構層次分明,嚴謹嚴密。 >>>More