回 帖 发 新 帖 刷新版面

主题:一个自然数n,求该数不同因数的个数。不懂啊!!

题目:给出一个自然数n,求出这个自然数不同因数的个数。
   例如n=6时,因为1,2,3,6这四个数均是6的因数,
   故输出为total=4

[em2]一定不会忘了给你加分的!!!

回复列表 (共9个回复)

沙发

最基本的方法:
从1到该数本身,挨个试
program Factors;
var
    total,cur,num:integer;
begin
    readln(num);
    total:=0;
    for cur:=1 to num do
       if num mod cur=0 then
           total:=total+1;

    writeln(total);
    readln;
end.

板凳

循环可以减少的:
var
num,total,i:integer;
begin
read(num);total:=0;
for i:=1 to num div 2 do
if num mod i =0
then total:=total+1;
writeln(total+1)
end.

3 楼

二楼的更好些.

4 楼

或许更好的:
total:=0;
for i:=1 to sqrt(n) do
  if n mod i=0
  then if i*i=n
       then total:=total+1
       else total:=total+2;
writeln(total);

5 楼

4楼的更加好一些

6 楼

楼上各位很热情,我也很感动[em11]
这道题目的代码很完善了,为了犒劳各位,我准备了几个新帖,给大家++分.多支持,多收获!![em12]

7 楼

先质因数分解
这样运算量大大减少
人脑>电脑

8 楼

那你干脆不全部直接用
writeln('          ');
writeln('   答     ');
writeln('          ');
writeln('   案     ');
writeln('          ');

9 楼

数学问题
假设n = a1^p1 * a2^p2 ... * an^pn (^是求幂,ai是质数,i=1~n)
则n的因数为:(p1+1)(p2+1)...(pn+1)个

我来回复

您尚未登录,请登录后再回复。点此登录或注册