主题:给一个正整数,求出它的因子,以下格式输出,如:10=2*5 16=2*2*2*2
薄荷草
[专家分:0] 发布于 2005-12-17 11:37:00
给一个正整数,求出它的因子,以下格式输出,如:10=2*5 16=2*2*2*2
回复列表 (共4个回复)
沙发
moz [专家分:37620] 发布于 2005-12-17 11:56:00
[url=http://www.programfan.com/club/showbbs.asp?id=126540&page=last#last]重复再重复[/url]
print jns$(320) '调用函数
deflng a-z '将变量默认为整形
function jns$(s)
k$=ltrim$(str$(s))+"=(" '为显示清楚描述
for i=2 to s\2 '从最小的质因数到最大的质因数
do until s mod i '反复整除质因数
k$=k$+ltrim$(str$(i))+"*" '在字符串里加上质因数
s=s/i '整除质因数
loop
next
mid$(k$,len(k$),1)=")" '把最后一个“*”号去掉,加上右括号
jns$=k$
end function
板凳
qb爱好人 [专家分:50] 发布于 2006-06-23 22:43:00
input n
dim a(sqr(n))
u=1
for i=1 to n
if n/i=0 then a(i)=i:u=u+1:n=n/i:i=i-1
if i>n then a(u)=n:exti for
next i
for i=1 to u-1
print ltrim$(str$(a(i)));"*";
next i
print ltrim$(str$(a(i))
end
3 楼
moz [专家分:37620] 发布于 2006-06-24 10:37:00
我不知道你有没有运行过
有没有发现其中几个问题
n/i=0 这表述了什么条件
你觉得会在什么情况下实现?
i从1开始,你不觉得会出现问题吗?
for i=1 to n你觉得i有可能大于n吗?
print ltrim$(str$(a(i))
你为什么要转换成字符串来显示呢?
直接数值用不更好吗?
4 楼
maxumi [专家分:2200] 发布于 2006-06-29 15:16:00
[quote]print ltrim$(str$(a(i))
你为什么要转换成字符串来显示呢?
直接数值用不更好吗?[/quote]
这是因为,直接输出的话左边会有一个空格. 像我这种看空格不顺眼的人都把它处理了.
我来回复