求一pascal程序,给出一个整数n,其中n小于等于10000,请统计n的因数的个数.
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/09 09:27:39
求一pascal程序,给出一个整数n,其中n小于等于10000,请统计n的因数的个数.
求一pascal程序,给出一个整数n,其中n小于等于10000,请统计n的因数的个数.
求一pascal程序,给出一个整数n,其中n小于等于10000,请统计n的因数的个数.
var n,i,ans:integer;
begin
readln(n);ans:=0; //读入,计数器置0
for i:=1 to n do if n mod i=0 then inc(ans); //从1到n循环 找到一个他的因数就计数器加一
writeln(ans); //最后输出结果
end.
var n,k:integer; begin readln(n); write(n,
一楼的程序是对的,但是复杂度较高;
可以用一个公式,令n=a1^b1*a2^b2*...*an^bn
那么它因数的个数就是(b1+1)*(b2+1)*...*(bn+1)
代码:
var
n,a,t,s:longint;
begin
readln(n);
a=2; s:=1;
while n>1 do begi...
全部展开
一楼的程序是对的,但是复杂度较高;
可以用一个公式,令n=a1^b1*a2^b2*...*an^bn
那么它因数的个数就是(b1+1)*(b2+1)*...*(bn+1)
代码:
var
n,a,t,s:longint;
begin
readln(n);
a=2; s:=1;
while n>1 do begin
while n mod a<>0 do inc(a);
t:=0;
while n mod a=0 do begin inc(t); n:=n div a; end;
s:=s*(t+1);
end;
writeln(s);
end;
收起
var n,i,a:integer;
begin
read(n);//读入n
for i:=1 to n do //循环搜索
if n mod i=0 then inc(a);//如果i是n的因数,那么a加一
write(a);
end.
定义、输入输出自己写!我把函数写下
function a(n:longint):longint;
var s,i:longint;
begin
s:=0;
for i:=1 to n do if n mod i=0 then inc(s);
a:=s;
end;