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