鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: 冬雪雪冬

[技术交流] Python:每日一题 187

[复制链接]
发表于 2018-7-22 17:29:12 | 显示全部楼层
  1. import math
  2. number = input("input a number = ")
  3. number = int(number)
  4. max = int(math.sqrt(number))
  5. while True:
  6.         if number%max == 0:
  7.                 print(max,int(number/max))
  8.                 break
  9.         else:
  10.                 max = max - 1
复制代码

评分

参与人数 1荣誉 +5 鱼币 +5 收起 理由
冬雪雪冬 + 5 + 5

查看全部评分

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

使用道具 举报

发表于 2018-7-22 21:26:51 | 显示全部楼层

好像range哪里忘改了,应该是1到输入值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-22 22:13:54 | 显示全部楼层
本帖最后由 sange333 于 2018-7-22 22:15 编辑

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

使用道具 举报

发表于 2018-7-22 22:44:03 | 显示全部楼层
if __name__=="__main__":
        number=input("please input a number:")
        res=[]
        number=int(number)
        for temp in range(number):
                temp=temp+1
                index=number
                fnum=float(number)
                tempres=fnum/temp

                if str(tempres).split(".")[-1]=="0" :
                        b=int(number/temp)
                        a=temp
                        res.append([a,b])
                        if abs(a-b)<abs(res[0][0]-res[0][1]):
                                del res[0]
        for i in res:
                print(res[0])
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-23 14:01:42 | 显示全部楼层
  1. def fun187(num):
  2.     av = num
  3.     tmp = []
  4.     for i in range(1, num // 2):
  5.         if num % i == 0:
  6.             if abs(i - (num // i)) <= av:
  7.                 av = abs(i - (num // i))
  8.                 tmp = sorted([i, num//i])
  9.     return tmp


  10. print(fun187(24))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-23 17:44:24 | 显示全部楼层

哥们你的代码好像有问题,用大一点的数值结果就有偏差了数值为9999999999
分解结果(99999, 100001)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-23 17:48:25 | 显示全部楼层
本帖最后由 liujian973 于 2018-7-24 16:16 编辑

import math
temp_input=int(input("请输入分解的整数"))
temp=[]
for i in 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,51,:
    while temp_input % i ==0:
        temp_input = temp_input / i
        temp.append(i)

for i in range(53,int(math.sqrt(temp_input))+1,2):
    if temp_input %i ==0:
        temp_input /=i
        temp.append(i)
temp.append(int(temp_input))
print(temp)


if len(temp) >=2:
    temp_1, temp_2 = temp[-1], temp[-2]
    for i in temp[:-2][::-1]:
        print(i)
        if temp_1 >= temp_2:
            temp_2 *=i
        else:temp_1 *=i

    print(temp_1,temp_2)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-23 18:51:12 | 显示全部楼层
liujian973 发表于 2018-7-23 17:44
哥们你的代码好像有问题,用大一点的数值结果就有偏差了数值为9999999999
分解结果(99999, 100001)

没懂啊,不是这个结果吗,,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 08:38:44 | 显示全部楼层
a = int(input("请输入一个正整数:"))
b = 1
x = a
while b <= a:
    c = a
    while c > 0:
        if b * c == a:
            d = c - b
            if x > d and d >= 0:
                x = d
                k = b
                l = c
        c -= 1
    b += 1
print(k, l)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 10:04:08 | 显示全部楼层

def test(n):
        list1 = []
        s = 999999
        for i in range(1,int(n/2)):
                if n % i == 0:
                        list1.append((i,int(n/i)))
        for j in list1:
                if abs(j[0] - j[1]) < s:
                        s = abs(j[0] - j[1])
                        nt = j
        print(nt,s)


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

使用道具 举报

发表于 2018-7-24 10:27:18 | 显示全部楼层
'''这次来个简单的。一个合数可以分解为两个数乘,例如24可以分成2*12,3*8,4*6,求出数字相差最小的两个乘数,如本例是4和6。'''
import math

target = int(input('输入一个数字:'))
sqrt = int(math.sqrt(target))
result = []
for i in range(1, sqrt+1):
    if math.ceil(target/i) - target/i < 0.0000000001 :
        result.append((i, int(target/i)))
print(result)
fin = result[:1]
for i in range(1, len(result)):
    print(result[i][0], result[i-1][0])
    if abs(result[i][0]-result[i][1]) < abs(result[i-1][0]-result[i-1][1]):
        fin = result[i]
print(fin)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 11:25:56 | 显示全部楼层
import math
def calculate(num):
    num = int(num)
    middle = int(math.sqrt(num))
    for x in range(middle,num+1):
        if num%x == 0:
            if x == num:
                print('该数为质数')
            else:
                print('该合数可以分解为:',x,int(num/x))
            break

num = input('请输入数字:')
calculate(num)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-24 16:01:28 | 显示全部楼层
liujian973 发表于 2018-7-23 17:44
哥们你的代码好像有问题,用大一点的数值结果就有偏差了数值为9999999999
分解结果(99999, 100001)

抱歉是我弄错了昨天我开始的代码有问题,没验证
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-30 07:35:07 | 显示全部楼层
  1. import math
  2. def fun187(n=4):
  3.     i=int(math.sqrt(n))+1
  4.     while i>1:
  5.         if n%i==0:
  6.            return i,n//i      
  7.         i-=1
  8.     return 'n是质数'
  9. print(fun187(24))
  10. print(fun187(49))
  11. print(fun187(43))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-5 18:15:34 | 显示全部楼层
  1. num_187=int(input('请输入一个整数:'))
  2. for i in range(1,num_187+1):
  3.     if num_187%i==0:
  4.         if num_187//i<=i:
  5.             break
  6. print('它的两个最接近的因数是:',num_187//i,i)
复制代码

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

使用道具 举报

发表于 2019-3-7 13:47:51 | 显示全部楼层
  1. def test187(num):
  2.     for i in range(int(num ** 0.5), 0, -1):
  3.         if num % i == 0:
  4.             return i, num // i
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-1 12:12:49 | 显示全部楼层
  1. def func(num):
  2.   for i in range(int(num**0.5),0,-1):
  3.     if num%i==0:return i,num//i
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-1 12:16:06 | 显示全部楼层
liujian973 发表于 2018-7-23 17:44
哥们你的代码好像有问题,用大一点的数值结果就有偏差了数值为9999999999
分解结果(99999, 100001)

难道99999*100001不等于9999999999?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-22 11:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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