[蓝蓝计算机考研算法]-day01判断该数是否为素数

146 阅读1分钟

1、从键盘输入一个整数,判断该数是否为素数

1.1 什么是素数

素数(质数)是指大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

1.2 思路

输入整数x,从2开始到x-1,若存在能将x整除的数,则x不是素数;否则x为素数。

1.3 实现

#include<stdio.h>
int main()
{
    int x;
    printf("请输入一个大于1的自然数:");
    scanf_s("%d",&x);
    for (int i = 2; i < x; ++i) {
        if (x % i == 0) {
            printf("%d不是素数。\n", x);
            return 0;
         }
     }
     printf("%d是素数。\n",x);
     return 0;
}

2、求解从2到20000的所有完数

2.1 什么是完数

完数是指所有的真因数的和等于本身的数字。

2.2 思路

遍历从2到20000的每一个整数,找出其所有真因数后加和,若和等于它本身则为完数;否则不是。

2.3 实现

#include<stdio.h>
int PerfectNumber(int);
int main()
{
	for (int n = 2; n <= 20000; n++) {
		if (PerfectNumber(n))
			printf("%d\n", n); //将n输出
		
	}
	return 0;
}
int PerfectNumber(int n) {  //判断n是否为完数
	int sum=0;
	for (int i = 1; i < n; ++i) {
		if (n % i == 0)
			sum += i;
	}
	if (sum == n)
		return 1;
	else
		return 0;
}