在Python中找出给定范围内特殊数字的程序

在Python中找出给定范围内特殊数字的程序

假设我们有一组整数,并要查找其中的特殊数字。一个特殊数字是一位十进制表示中的正整数。如果一个数字在其十进制表示中有多个位数,且该数字可被其十进制表示中的数字计数整除,并且商值本身是特殊数字,则该数字也可以是特殊数字。我们返回给定范围(left_limit, right_limit)内特殊数字的数量。

因此,如果输入为left_limit = 5,right_limit = 30,则输出将为13。

该范围内的特殊数字是:5、6、7、8、9、10、12、14、16、18、20、24和28。

为了解决这个问题,我们将按照以下步骤进行:

  • 如果right_limit < 10,则
    • 返回right_limit – left_limit + 1
  • len_right := right_limit的字符串表示的大小
  • number_list := [0,1,2,3,4,5,6,7,8,9,10,12,14,16,18]
  • for j in range 2 to len_right + 1, do
    • for each k in number_list, do
      • temp1 := k * j
      • 如果temp1的字符串表示的大小与j相同,则
      • 在number_list的末尾插入temp1
      • 否则,当len(str(temp1)) > j时,则
      • 退出循环
      • 如果number_list [number_list的大小 – 1] >= right_limit,则
      • 退出循环
  • 删除number_list中的重复值并排序
  • 计数:=0
  • for each temp2 in number_list, do
    • 如果temp2 >= left_limit且temp2 <= right_limit,则
      • 计数:=计数+1
  • 返回计数

示例

让我们看看以下实现,以便更好地理解 –

def strange(left_limit, right_limit):
    if right_limit < 10:
        return right_limit - left_limit + 1
    len_right = len(str(right_limit))
    number_list = [0,1,2,3,4,5,6,7,8,9,10,12,14,16,18]
    for j in range(2, len_right + 1):
        for k in number_list:
            temp1 = k*j
            if len(str(temp1)) == j:
                number_list.append(temp1)
            elif len(str(temp1)) > j:
                break
            if number_list[len(number_list)-1] >= right_limit:
                break
    number_list = list(set(number_list))
    count = 0
    for temp2 in number_list:
        if temp2 >= left_limit and temp2 <= right_limit:
            count = count + 1
    return count
print(strange(5, 30))

输入

5, 30

输出

13

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程