gpt4 book ai didi

algorithm - 如何找到一个数的除数并按升序打印出来?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:14 24 4
gpt4 key购买 nike

我正在尝试尽可能快地完成它。我想不通的是如何将所有除数放入数组,然后对该数组进行排序。

我已经优化了 for 循环 - 它以 sqrt(n) 结尾。

我也重构了我的代码,但它仍然没有通过所有的测试

type  output = array of longint; 
var
grater,lower: output;
n,i,v,counter:longint;
begin
read(n);
setLength(grater, round(Sqrt(n)));
setLength(lower, round(Sqrt(n)));
counter:= 0;

for i:=1 to round(Sqrt(n)) do
begin

if (n mod i = 0) then
begin
if i>round(Sqrt(n)) then
grater[counter]:= i
else
lower[counter]:=i;
if n div i>round(Sqrt(n)) then
grater[counter]:= n div i
else
lower[counter]:=n div i;
counter:= counter +1;
end;
end;

for v:=0 to Length(lower) do
begin
if (lower[v] <> 0) then writeln(lower[v]);
end;
for v:=Length(grater)-1 downto 0 do
begin
if grater[v] <> 0 then writeln(grater[v]);
end;
end.

最佳答案

看起来你正在做的是这样的:

  1. 检查从 2 到 sqrt(n) 的所有整数
  2. 如果输入可以被整数整除,记录整数和(输入/整数)

因此对于输入 12,您的输出可能如下所示:

2
6
3
4

调整现有内容的一种简单方法是使用两个列表作为答案:第一个列表将按升序记录小于 sqrt(input) 的因子,第二个列表将按降序记录大于 sqrt(input) 的因子命令。然后,要按顺序打印它们,只需按顺序打印第一个列表的内容,然后按相反顺序打印第二个列表的内容即可。

关于algorithm - 如何找到一个数的除数并按升序打印出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58650480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com