pascal表中找数

来源:百度知道 编辑:UC知道 时间:2024/07/08 23:26:36
观察下表,依据表格重数据排列的规律,请用pascal求出正整数n在表中出现的次数。
1 2 3 4···
2 4 6 8···
3 6 9 12···
4 8 12 16···
· · · ·

表的第i列表示了i的所有倍数,所以求出n的约数的个数就行了。
program df;
var n,i,so:longint;
begin
readln(n);
for i:=1 to trunc(sqrt(n)) do
if n mod i=0 then inc(so,2);
if sqrt(n)-trunc(sqrt(n))<0.00000001 then dec(so);
writeln(so);
end.
ps:只需验证到sqrt(n)

各部分定义你会把?都不详细说了。
max:=0;
for i:=1 to n do
if n mod i=0 then inc(max);
writeln(max);

根据表中的规律可以看出几点,
在每一行的数种,后一个数总比前一个数多i(表示以i开始,也表示当前为第几行) 。并且在这些规律种会发现,每行开头的第一个数是其中最小的,后变的皆是前边的倍数。
所以,只要求出从1到n所有的n约数就可以了。

只要求出n的约数的个数就行了。