1 素数(质数)
📖 理论介绍
素数是大于1的自然数,除了1和它本身外无法被其他自然数整除的数。
例如:2, 3, 5, 7, 11, 13, 17, 19, 23, 29等都是素数。
素数(真题中出现过,务必掌握)。
判断一个数是否为素数的常见方法是试除法,即用2到n-1之间的所有整数去除n(或者到√n),如果都除不尽,则n是素数。
💻 示例代码
#include<stdio.h> #include<math.h> int isPrime(int n) { if(n <= 1) return 0; for(int i = 2; ______________; i++) { if(n % i == 0) return 0; } return 1; } int main() { printf("101-200之间的素数有:\n"); for(int i = 101; ______________; i++) { if(______________) { printf("%d ", i); } } return 0; }
2 水仙花数
📖 理论介绍
水仙花数是指一个 n 位数,其各位数字的 n 次方之和等于该数本身。
例如:153 = 1³ + 5³ + 3³,所以153是一个水仙花数。
水仙花数也称为自恋数、自幂数(是阿姆斯特朗数的一种特殊例子),但通常水仙花数特指三位数的情况。
常见的水仙花数有:153, 370, 371, 407。
💻 示例代码
#include<stdio.h> #include<math.h> int isNarcissistic(int n) { int original = n; int sum = 0; while(n > 0) { int digit = ______________; sum += ______________; n /= 10; } return ______________; } int main() { printf("100-999之间的水仙花数有:\n"); for(int i = 100; i < 1000; i++) { if(isNarcissistic(i)) { printf("%d ", i); } } return 0; }
3 阿姆斯特朗数
📖 理论介绍
阿姆斯特朗数(Armstrong Number)是指一个n位正整数,其各位数字的n次方之和等于该数本身。
例如:153 = 1³ + 5³ + 3³,所以153是一个阿姆斯特朗数。
当n=3时,阿姆斯特朗数也称为水仙花数。但阿姆斯特朗数可以是任意位数。
其他例子:9474 = 9⁴ + 4⁴ + 7⁴ + 4⁴,所以9474是一个4位阿姆斯特朗数。
💻 示例代码
#include<stdio.h> #include<math.h> int isArmstrong(int num) {// 判断是否为阿姆斯特朗数 int sum = 0,n = 0;int temp = num; while(______________) {// 计算位数 n++; temp /= 10; } temp = ______________; while(temp != 0) {// 计算各位数字的n次方之和 int digit = temp % 10; sum += ______________; temp /= 10; } return sum == num; } int main() { int start = 100,end = 999; printf("阿姆斯特朗数(范围%d-%d):\n", start, end); for(int i = start; i <= end; i++) if(isArmstrong(i)) printf("%d\n", i); return 0; }
4 完数(完全数)
📖 理论介绍
完数是指一个数恰好等于它的真因子(即除了自身以外的约数)之和。
例如:6 = 1 + 2 + 3,所以6是一个完数。
但是我们会发现这些约数必定是<=自身的一半的,当约数为4、5时不可能除尽。
完数也被称为完全数,前几个完数分别是6, 28, 496, 8128。
完数在数论中有着重要的地位,目前发现的完数都是偶数,是否存在奇完数仍然是数学界的一个未解问题。
💻 示例代码
#include<stdio.h> int isPerfectNumber(int n) { int sum = 0; for(int i = 1; i <= ______________; i++) { if(______________) { sum += i; } } return sum == n; } int main() { printf("1-1000之间的完数有:\n"); for(int i = 1; i <= 1000; i++) { if(isPerfectNumber(i)) { printf("%d ", i); } } return 0; }
5 斐波那契数列
📖 理论介绍
斐波那契数列是由0和1开始,后续每一项都是前两项之和的数列。
数列形式:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
斐波那契数列在自然界中广泛存在,如花瓣数目、蜂巢、鹦鹉螺壳等。
斐波那契数列在计算机算法中也有广泛应用,如动态规划、搜索算法等。
💻 示例代码
#include<stdio.h> void fibonacci(int n) { int a = 0, ______________, next; printf("斐波那契数列前%d项:\n", n); for(int i = 1; i <= ______________; i++) { printf("%d ", a); next = ______________; a = b; b = next; } } int main() { fibonacci(10); return 0; }