Pascal大合数分解
答案:5 悬赏:0 手机版
解决时间 2021-12-01 21:51
- 提问者网友:我的未来我做主
- 2021-12-01 08:58
Pascal大合数分解
最佳答案
- 五星知识达人网友:孤老序
- 2021-12-01 10:05
楼上的程序都是过不了大数据的,因为它们复杂度都是O(n),而我的是O(sqrt(n))
QQ:422033281
var
i,n:longint;
first:boolean;
begin
readln(n);
first:=true;
write(n,'=');
if n<=1 then write(n);
for i:=2 to trunc(sqrt(n)) do begin
if n=1 then break;//n=1表示已经分解完毕
while n mod i=0 do begin
if not first then write(' ');
first:=false;
write(i);
n:=n div i;
end;
end;
if n<>1 then write(n);//如果n是质数的话,要特殊判断一下。
writeln;
end.
QQ:422033281
var
i,n:longint;
first:boolean;
begin
readln(n);
first:=true;
write(n,'=');
if n<=1 then write(n);
for i:=2 to trunc(sqrt(n)) do begin
if n=1 then break;//n=1表示已经分解完毕
while n mod i=0 do begin
if not first then write(' ');
first:=false;
write(i);
n:=n div i;
end;
end;
if n<>1 then write(n);//如果n是质数的话,要特殊判断一下。
writeln;
end.
全部回答
- 1楼网友:拜訪者
- 2021-12-01 15:57
LS的
大数据有问题。。。
质因子会超过longint的。。。
大数据有问题。。。
质因子会超过longint的。。。
- 2楼网友:平生事
- 2021-12-01 14:23
不需要数组的.QQ:544520531;
var x,i:longint;
begin
read(x);
for i:=2 to x do
if x=1 then break
else while x mod i=0 do
begin
write(i,' ');
x:=x div i;
end;
end.
var x,i:longint;
begin
read(x);
for i:=2 to x do
if x=1 then break
else while x mod i=0 do
begin
write(i,' ');
x:=x div i;
end;
end.
- 3楼网友:长青诗
- 2021-12-01 12:43
program a114;
var
a,j:real;
begin
readln(a);
j:=2;
while a>1 do
if a/j=trunc(a/j) then
begin
a:=a/j;
write(trunc(j),' ');
end
else j:=j+1;
end.
选我的!!!!!!!!!!!!!!!
QQ:254648261
var
a,j:real;
begin
readln(a);
j:=2;
while a>1 do
if a/j=trunc(a/j) then
begin
a:=a/j;
write(trunc(j),' ');
end
else j:=j+1;
end.
选我的!!!!!!!!!!!!!!!
QQ:254648261
- 4楼网友:野味小生
- 2021-12-01 11:03
var n:int64;
i:longint;
save:array[1..100000] of longint;
len:longint;
begin
readln(n);
i:=1;
repeat
inc(i);
while n mod i=0 do
begin
n:=n div i;
inc(len);
save[len]:=i;
end;
until n=1;
for i:=1 to len-1 do write(save[i],' ');
writeln(save[len]);
end.
//有什么问题你说,563664120
i:longint;
save:array[1..100000] of longint;
len:longint;
begin
readln(n);
i:=1;
repeat
inc(i);
while n mod i=0 do
begin
n:=n div i;
inc(len);
save[len]:=i;
end;
until n=1;
for i:=1 to len-1 do write(save[i],' ');
writeln(save[len]);
end.
//有什么问题你说,563664120
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯