You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从整数中移除奇数并合并结果(不使用字符串实现)

从整数中移除奇数数字(无字符串实现)

嘿,这个问题我之前写代码的时候也琢磨过,不用字符串的话,核心就是靠数学运算拆分+重组数字,完全可以用你说的while循环搞定,咱们来一步步理清楚:

核心思路

不用字符串的话,我们没法直接拼接数字,所以得靠「位权」来重组:

  1. 每次从原数的末尾拆出一位数字
  2. 判断如果是偶数,就把它放到结果的对应位置(靠乘以10的倍数来实现位数提升)
  3. 把原数去掉末尾的数字,循环直到原数变成0

代码实现(以Python为例)

def remove_odd_digits(original_num):
    result = 0
    place_value = 1  # 记录当前要添加的数字的位权:个位是1,十位是10,以此类推
    
    while original_num > 0:
        # 拆出最后一位数字
        current_digit = original_num % 10
        
        # 只保留偶数数字
        if current_digit % 2 == 0:
            result += current_digit * place_value
            place_value *= 10  # 位权升级,下一个偶数要放在更高位
        
        # 去掉原数的最后一位,继续处理前面的数字
        original_num = original_num // 10
    
    return result

# 测试你的例子
print(remove_odd_digits(23875326))  # 输出:2826

逻辑拆解

咱们拿你的例子23875326走一遍流程,你就能明白:

  • 第一次循环:拆出6(偶数),result = 6*1 =6,place_value变成10,原数变成2387532
  • 第二次循环:拆出2(偶数),result =6 +2*10=26,place_value变成100,原数变成238753
  • 第三次循环:拆出3(奇数),直接跳过,原数变成23875
  • 后面依次跳过5、7,直到拆出8:result=26 +8*100=826,place_value变成1000,原数变成23
  • 跳过3,最后拆出2:result=826 +2*1000=2826,完美得到目标结果!

特殊情况处理

如果输入的数字全是奇数(比如1357),函数会返回0,如果你需要对这种情况做特殊处理(比如返回空或者提示),可以在最后加个判断:

def remove_odd_digits(original_num):
    result = 0
    place_value = 1
    
    while original_num > 0:
        current_digit = original_num % 10
        if current_digit % 2 == 0:
            result += current_digit * place_value
            place_value *= 10
        original_num = original_num // 10
    
    # 全奇数的情况返回None或者自定义提示
    return result if result !=0 else None

内容的提问来源于stack exchange,提问作者msacco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:56:58