python整除_数字整除 (Python代码)

博客中自行定义了数据类型gj用于高精度计算,可在写高精时复用。为偷懒将 -5p 改成 +12p 进行计算。给出了Python代码实现,包括gj类的各种方法,最后实现输入判断是否能被17整除的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实就是当高精练习了

自行定义了数据类型gj,以后每次写高精可以照抄一波。

求各路大佬更好的高精写法!

就题目而言,没什么要点,按照定理算即可。

在具体实现上,为了偷懒不要写减法,就把-5p改成了+12p,反正影响不大。

```python

class gj():

def __init__(self):

self.num=[]

self.len=0

def str2gj(strin):

gj0=gj()

gj0.num=[int(i) for i in strin[::-1]]

gj0.len=len(strin)

return gj0

def num2gj(numin):

return gj.str2gj(str(numin))

def zero(self,zeronum):

zerogj=gj()

zerogj.num=self.num+zeronum*[0]

zerogj.len=self.len+zeronum

return zerogj

def delzero(self):

if self.len:

while self.num[-1]==0:

self.num.pop()

self.len-=1

if self.len==0:

break

def add(gj1,gj2):

x=max(gj1.len,gj2.len)+1

g1=gj1.zero(x-gj1.len)

g2=gj2.zero(x-gj2.len)

addiv=0

adsum=[]

for i in range(x):

addiv,admod=divmod(g1.num[i]+g2.num[i]+addiv,10)

adsum.append(admod)

adres=gj()

adres.num=adsum

adres.len=x

adres.delzero()

return adres

def _add(self,addgj):

adres=gj.add(self,addgj)

self.num=adres.num

self.len=adres.len

def gj2num(self):

value=0

star=1

for i in range(self.len):

value+=self.num[i]*star

star*=10

return value

def ctr(self):

p=self.num.pop(0)

self.len-=1

pgj=gj.num2gj(p*12)

self._add(pgj)

return self

def qu(x):

if len(x)>5:

x=gj.str2gj(x)

while x.len>5:

x.ctr()

x=x.gj2num()

else:

x=int(x)

return 1 if x%17==0 else 0

u=input()

while u!='0':

print(gj.qu(u))

u=input()

```

0.0分

1 人评分

### Python整除运算符 `//` 的使用方法 在 Python 中,整除运算符 `//` 被称为地板除(Floor Division),其作用是对两个数值进行除法计算并返回商的 **整数部分**。无论操作数是正数还是负数,该运算都会向下取整到最接近的结果[^1]。 #### 基本语法 ```python result = dividend // divisor ``` 其中: - `dividend` 表示被除数。 - `divisor` 表示除数。 如果 `divisor` 为零,则会引发 `ZeroDivisionError` 错误[^5]。 --- #### 示例代码展示 以下是几个典型的整除运算实例: ```python # 正数之间的整除 a = 10 b = 3 c = a // b # 结果为 3 print(f"{a} // {b} = {c}") # 输出:10 // 3 = 3 # 负数参与的整除 d = -10 e = 3 f = d // e # 结果为 -4 (向负无穷方向取整) print(f"{d} // {e} = {f}") # 输出:-10 // 3 = -4 g = 10 h = -3 i = g // h # 结果为 -4 (同样向负无穷方向取整) print(f"{g} // {h} = {i}") # 输出:10 // -3 = -4 j = -10 k = -3 l = j // k # 结果为 3 print(f"{j} // {k} = {l}") # 输出:-10 // -3 = 3 ``` 以上代码展示了不同情况下整除运算的行为特点。需要注意的是,在涉及负数的情况下,整除总是倾向于更小的方向取整[^3]。 --- #### 浮点数的整除 当任意一方为浮点数时,整除运算仍然有效,但结果仍是一个浮点数形式表示的整数值。 ```python m = 10.5 n = 3 o = m // n # 结果为 3.0 print(f"{m} // {n} = {o}") # 输出:10.5 // 3 = 3.0 p = -10.8 q = 3 r = p // q # 结果为 -4.0 print(f"{p} // {q} = {r}") # 输出:-10.8 // 3 = -4.0 ``` 这表明即使输入中有浮点数,整除依然遵循向下取整的原则。 --- #### 应用场景举例 整除运算常用于需要忽略小数部分或者分配资源等实际问题中。例如: ##### 场景一:分组数量计算 假设有一批物品总数为 `total_items`,每组最多容纳 `group_size` 件商品,那么可以利用整除来快速估算至少需要多少组才能完成分配。 ```python total_items = 25 group_size = 6 groups_needed = (total_items + group_size - 1) // group_size print(groups_needed) # 输出:5 ``` 这里 `(total_items + group_size - 1)` 是为了向上取整而设计的小技巧[^2]。 ##### 场景二:时间转换 将秒数转化为分钟数或其他单位也可以借助整除实现。 ```python seconds = 12345 minutes = seconds // 60 hours = minutes // 60 print(f"{seconds} 秒等于 {hours} 小时 {minutes % 60} 分钟") # 输出:12345 秒等于 3 小时 25 分钟 ``` --- ### 总结 Python整除运算符 `//` 提供了一种简单高效的方式来进行地板除法操作。无论是处理正数、负数还是浮点数,它都能按照预期给出合理的答案,并广泛应用于各种实际编程需求之中。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值