回 帖 发 新 帖 刷新版面

主题:给一个正整数,求出它的因子,以下格式输出,如:10=2*5 16=2*2*2*2

给一个正整数,求出它的因子,以下格式输出,如:10=2*5 16=2*2*2*2

回复列表 (共4个回复)

沙发

[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

板凳

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 楼

我不知道你有没有运行过
有没有发现其中几个问题
n/i=0 这表述了什么条件
你觉得会在什么情况下实现?
i从1开始,你不觉得会出现问题吗?
for i=1 to n你觉得i有可能大于n吗?
print ltrim$(str$(a(i))
你为什么要转换成字符串来显示呢?
直接数值用不更好吗?

4 楼

[quote]print ltrim$(str$(a(i))
你为什么要转换成字符串来显示呢?
直接数值用不更好吗?[/quote]

这是因为,直接输出的话左边会有一个空格. 像我这种看空格不顺眼的人都把它处理了.

我来回复

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