`

三个自然数的算法问题

阅读更多
假设有三个自然数A,B,C,关系是A+B=C。A与B的关系是B是A去掉一位后组成的新数(除去掉数字外,其他数字先后顺序不变)。
现在已知C,求A,这种算法题该怎么解?

例子:如果C等于34,那么A有三种情况,27,31,32

function IsPartOf(A, B: Integer): Boolean;
var
  S, T: String;
  i : Integer;
begin 
  Result := False;
  S := IntToStr(A);
  T := IntToStr(B);
  for i := 1 to Length(S) do 
  begin 
    if Copy(S, 1, i - 1) + Copy(S, i + 1, Length(S)) = T then 
      begin 
        Result := True;
        break;
      end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var  A, B, C: Integer;
begin
  C := 34;
  for A := C - 1 downto 10 do 
  begin 
    B := C - A;
    if B > A then break;
    if IsPartOf(A, B) then
      Memo1.Lines.Add(Format('%d = %d + %d', [C, A, B]));
  end;
end;

这种算法缺点在于位数一多起来计算速度慢,有谁有更好的算法?任何语言编写的都可以贴出来讨论讨论

分享到:
评论

相关推荐

    拆分自然数的几种算法.doc

    **自然数的拆分**指的是任何一个大于1的自然数\( N \),都可以被表示为若干个自然数之和,并且存在多种不同的拆分方式。例如,数字5可以被拆分为: - \( 5 = 1 + 1 + 1 + 1 + 1 \) - \( 5 = 1 + 1 + 1 + 2 \) - \( ...

    史上最全最经典数据结构-100个经典算法

    1. **河内塔 (Towers of Hanoi)**: 这是一个经典的递归问题,通过三个柱子和若干个大小不一的圆盘,演示了如何在遵循特定规则(大盘子不能放在小盘子之上)的情况下,将所有圆盘从一个柱子移动到另一个柱子。...

    vb最大公约数如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数

    在VB(Visual Basic)编程语言中,计算两个或多个自然数的最大公约数(Greatest Common Divisor, GCD)是一项常见的任务。VB 提供了基本的数学运算和控制结构,可以方便地实现这个功能。本篇文章将深入探讨如何在VB...

    自己写的排序,最大公约数,取自然数,zigzag等经典C++算法(内附算法说明)

    这些算法涵盖了排序、计算最大公约数以及生成自然数序列和Zigzag序列等多种常见问题。让我们逐一深入探讨这些算法。 1. **排序算法**:排序是计算机科学中的基本问题,用于组织和整理数据。在提供的压缩包中,可能...

    c++经典算法

    在编程领域,算法是解决问题的关键,而C++...通过解决这些问题,程序员可以锻炼自己的编程技巧,为解决更复杂的算法问题打下坚实基础。无论是初学者还是有经验的开发者,研究和实现这些经典算法都能带来极大的益处。

    算法设计题集—经典的算法设计思想

    以寻找两个自然数为例,这两个数的和为667,它们的最小公倍数与最大公约数之比为120:1。这个问题可以通过逐步求精的方法来解决: 1. **第一层抽象:** 编写主程序框架,确定输入输出以及基本的处理逻辑。 2. **第二...

    实验报告3页面置换算法演示.doc

    实验报告“实验报告3页面置换算法演示.doc”主要探讨了操作系统中的页面置换算法,这是解决内存管理和虚拟存储问题的关键技术。本实验旨在帮助学生深入理解内存管理策略,特别是页面置换算法的工作原理及其执行过程...

    Java经典算法40例

    总结以上三个程序实例,我们可以了解到算法在编程中的重要性,算法可以帮助我们高效地解决各种问题。在Java编程中,递归、循环以及条件判断等基本控制结构是解决问题的基石。掌握这些基本的算法技巧对于编写高效且...

    最大公约数的三种算法复杂度分析时间计算.docx

    欧几里得算法的时间复杂度为 O(log n),其中 n 是两个自然数 m 和 n 的较大值。该算法的实现较为复杂,但其时间复杂度较低,特别是在两个自然数很大的情况下。 分解质因数算法的时间复杂度为 O(√n),其中 n 是两个...

    程序设计与算法问题求解概要PPT学习教案.pptx

    程序设计与算法问题求解概要是计算机科学中的基础概念,涉及到如何通过计算机解决特定问题的步骤和方法。在解决问题时,通常分为三个主要部分:输入(Input)、处理(Processing)和输出(Output)。首先,我们需要...

    迭代算法解题地一般思路 doc

    在使用迭代算法时,主要涉及三个关键环节: 1. **确定迭代变量**:迭代变量是问题解决方案中的关键,它是随着算法执行而不断更新的变量。例如,在兔子繁殖问题中,迭代变量可以表示每个月兔子的数量。 2. **建立...

    算法----众数问题

    - **问题描述**:给定一个包含 n 个自然数的多重集 S,要求编写程序来找出 S 的众数及其重数。 - **输入格式**: - 第一行包含一个整数 n,表示多重集 S 中元素的数量。 - 接下来的 n 行,每行包含一个自然数,...

    Java经典问题算法大全

    这个问题的背景设定为一对新生的兔子从第三个月开始每个月都会生育一对新兔子,而这些新出生的兔子同样从第三个月开始也会每月生育一对兔子。假设所有的兔子都不会死亡,那么问题的关键在于计算每个月兔子的总数量。...

    应用GA和PSO算法求解10城市TSP问题

    #### 三、PSO算法求解10城市TSP问题 ##### 3.1 PSO算法描述 **交换子与交换序**:对于TSP问题,可以通过定义交换子SO(i1,i2)来改变解的顺序,即将当前解中的第i1个城市与第i2个城市互换位置。一个或多个交换子的...

    C语言:穷举算法.doc

    卡片问题是一个更复杂的穷举算法问题,问题是有 8 张卡片,上面分别写着自然数 1 至 8。从中取出 3 张,要使这 3 张卡片上的数字之和为 9。这个问题可以用穷举算法来解决,具体实现方法是通过三个循环语句来枚举所有...

    一百个经典算法,C语言编写

    21. 由两个平方三位数获得三个平方二位数:数学构造问题,可能涉及平方数的性质。 22. 阿姆斯特朗数:寻找满足特定条件的数字,即每个数字位上的立方和等于原数。 23. 完全数:研究完全数的概念,其所有真因数之和...

    程序设计与算法问题求解概要PPT课件.pptx

    《程序设计与算法问题求解概要》课程旨在教授如何利用计算机解决实际问题,并通过具体的实例深入解析程序设计的一般步骤。程序设计的核心是输入、处理和输出的逻辑流程,这是解决问题的基础。在计算机解题过程中,...

    算法设计习题集

    - 给定两个自然数的和为667,它们的最小公倍数与最大公约数之比为120:1,找出符合条件的所有自然数对。 **解决步骤:** 1. **定义变量:** - `m` 表示其中一个自然数。 - `l` 表示两数的最小公倍数。 - `g` 表示...

    常见问题算法分析 算法

    12个小球问题是一个经典谜题,需要找出一个假球(质量不同),最少需要称量三次。这涉及到二分搜索和排除法。 **15. 相邻数之和为素数问题** 找到一个序列,使得相邻两个数之和为素数,这需要结合生成数列和素数...

    求两个自然数的最大公约数和最小公倍数

    在C#编程中,求解两个自然数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)是基础的数学算法问题,广泛应用于计算机科学,尤其是在处理整数操作时。下面将详细介绍如何...

Global site tag (gtag.js) - Google Analytics