主题:一个自然数n,求该数不同因数的个数。不懂啊!!
chenzhong
[专家分:250] 发布于 2005-08-11 22:30:00
题目:给出一个自然数n,求出这个自然数不同因数的个数。
例如n=6时,因为1,2,3,6这四个数均是6的因数,
故输出为total=4
[em2]一定不会忘了给你加分的!!!
回复列表 (共9个回复)
沙发
jzyray [专家分:20610] 发布于 2005-08-11 22:43:00
最基本的方法:
从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.
板凳
绿步甲 [专家分:1610] 发布于 2005-08-12 12:22:00
循环可以减少的:
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 楼
zhsas [专家分:1680] 发布于 2005-08-12 12:40:00
二楼的更好些.
4 楼
lzl1403 [专家分:1670] 发布于 2005-08-14 22:00:00
或许更好的:
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 楼
林记 [专家分:1680] 发布于 2005-08-14 22:12:00
4楼的更加好一些
6 楼
chenzhong [专家分:250] 发布于 2005-08-15 19:03:00
楼上各位很热情,我也很感动[em11]
这道题目的代码很完善了,为了犒劳各位,我准备了几个新帖,给大家++分.多支持,多收获!![em12]
7 楼
hadewood [专家分:60] 发布于 2005-08-27 20:04:00
先质因数分解
这样运算量大大减少
人脑>电脑
8 楼
yukangcool [专家分:460] 发布于 2005-08-28 22:53:00
那你干脆不全部直接用
writeln(' ');
writeln(' 答 ');
writeln(' ');
writeln(' 案 ');
writeln(' ');
9 楼
FancyMouse [专家分:13680] 发布于 2005-08-29 00:27:00
数学问题
假设n = a1^p1 * a2^p2 ... * an^pn (^是求幂,ai是质数,i=1~n)
则n的因数为:(p1+1)(p2+1)...(pn+1)个
我来回复