鱼C论坛

 找回密码
 立即注册
查看: 2461|回复: 8

[已解决]这个错误该怎么解决

[复制链接]
发表于 2017-1-11 12:22:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

我写的 。。
最佳答案
2017-1-11 15:01:37
  1. def fj(n):
  2.     a = str(n) + '='
  3.     k = 2
  4.     while n != 1:
  5.         if n % k == 0:
  6.           a += str(k)+'*'
  7.           n /= k
  8.         else:
  9.             k += 1
  10.     print(a[:-1])

  11. fj(90)
复制代码


1

1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-1-11 12:24:29 | 显示全部楼层
该怎么修改下呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-11 14:18:46 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-1-11 15:01:37 | 显示全部楼层    本楼为最佳答案   
  1. def fj(n):
  2.     a = str(n) + '='
  3.     k = 2
  4.     while n != 1:
  5.         if n % k == 0:
  6.           a += str(k)+'*'
  7.           n /= k
  8.         else:
  9.             k += 1
  10.     print(a[:-1])

  11. fj(90)
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-11 15:48:12 | 显示全部楼层
i += 1语句的缩进有问题啊。
我猜你两个文件的第二行肯定是相同的,所以第二次循环根本没有跳到if语句块当中
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-11 15:49:31 | 显示全部楼层
Colin@aha 发表于 2017-1-11 15:48
i += 1语句的缩进有问题啊。
我猜你两个文件的第二行肯定是相同的,所以第二次循环根本没有跳到if语句块当 ...

回复错帖子了。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-11 15:59:13 | 显示全部楼层
本帖最后由 lzxhu1231 于 2017-1-11 16:02 编辑


看懂了  。python 才学问最基本的语法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-11 16:02:05 | 显示全部楼层
递归:
  1. res = []
  2. def yushu(n):
  3.         global res
  4.         k = 2
  5.         while k<=n:
  6.                 if n%k == 0:
  7.                         res.append(k)
  8.                         yushu(n//k)
  9.                         return
  10.                 else:
  11.                         k += 1
  12. yushu(90)
  13. print ('90 =','*'.join([str(i) for i in res]))
复制代码


90 = 2*3*3*5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-11 16:18:06 | 显示全部楼层
非递归:
  1. def yushu(n):
  2.         res = []
  3.         k = 2
  4.         while k<=n:
  5.                 if n%k==0:
  6.                         res.append(k)
  7.                         n,k = n//k,2
  8.                 else:
  9.                         k += 1
  10.         return res
  11. print('90 =', '*'.join([str(i) for i in yushu(90)]))
复制代码


90 = 2*3*3*5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-24 23:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表