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;
}