🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 什么是算法? > 原文: [https://www.programiz.com/dsa/algorithm](https://www.programiz.com/dsa/algorithm) #### 在本教程中,我们将借助示例学习什么算法。 算法是依次解决问题的一组明确定义的指令。 * * * ## 好的算法的质量 1. 输入和输出应精确定义。 2. 算法中的每个步骤都应清晰明确。 3. 在解决问题的许多不同方式中,算法应该是最有效的。 4. 算法不应该包含计算机代码。 相反,应以可以在不同编程语言中使用的方式编写算法。 * * * ## 算法实例 [将两个数字相加的算法](#add) [在三个数字中查找最大的算法](#largest) [查找二次方程式](#quadratic)的所有根的算法 [查找阶乘](#factorial)的算法 [检查素数的算法](#prime) [斐波那契数列](#fab)的算法 * * * ## 编程中的算法示例 **编写一种算法,将用户输入的两个数字相加。** ``` Step 1: Start Step 2: Declare variables num1, num2 and sum. Step 3: Read values num1 and num2\. Step 4: Add num1 and num2 and assign the result to sum. sum←num1+num2 Step 5: Display sum Step 6: Stop ``` **编写一种算法来查找用户输入的三个不同数字中的最大数字。** ``` Step 1: Start Step 2: Declare variables a,b and c. Step 3: Read variables a,b and c. Step 4: If a > b If a > c Display a is the largest number. Else Display c is the largest number. Else If b > c Display b is the largest number. Else Display c is the greatest number. Step 5: Stop ``` **编写算法来查找二次方程`ax^2 + bx + c = 0`的所有根。** ``` Step 1: Start Step 2: Declare variables a, b, c, D, x1, x2, rp and ip; Step 3: Calculate discriminant D ← b2-4ac Step 4: If D ≥ 0 r1 ← (-b+√D)/2a r2 ← (-b-√D)/2a Display r1 and r2 as roots. Else Calculate real part and imaginary part rp ← b/2a ip ← √(-D)/2a Display rp+j(ip) and rp-j(ip) as roots Step 5: Stop ``` **编写算法来查找用户输入的数字的阶乘。** ``` Step 1: Start Step 2: Declare variables n, factorial and i. Step 3: Initialize variables factorial ← 1 i ← 1 Step 4: Read value of n Step 5: Repeat the steps until i = n 5.1: factorial ← factorial*i 5.2: i ← i+1 Step 6: Display factorial Step 7: Stop ``` **编写算法来检查用户输入的数字是否为质数。** ``` Step 1: Start Step 2: Declare variables n, i, flag. Step 3: Initialize variables flag ← 1 i ← 2 Step 4: Read n from the user. Step 5: Repeat the steps until i=(n/2) 5.1 If remainder of n÷i equals 0 flag ← 0 Go to step 6 5.2 i ← i+1 Step 6: If flag = 0 Display n is not prime else Display n is prime Step 7: Stop ``` **编写算法来找到直到项`≤ 1000`的斐波那契数列。** ``` Step 1: Start Step 2: Declare variables first_term,second_term and temp. Step 3: Initialize variables first_term ← 0 second_term ← 1 Step 4: Display first_term and second_term Step 5: Repeat the steps until second_term ≤ 1000 5.1: temp ← second_term 5.2: second_term ← second_term + first_term 5.3: first_term ← temp 5.4: Display second_term Step 6: Stop ```