素数是指那些除了它本身和1之外没有其他因子的自然数,我们可以通过用我们输入的数字依次取余它前面的所有素数来看看是否可以整除,因为它前面其他的那些不是素数的数,都可以用这些素数相乘表示出来,然而这种方法逻辑稍显复杂,首先要先找到输入数字前面所有的素数,这一点已经很麻烦,因此我们采用直接取余它前面所有数字的方法来判断它是否是素数。下面我们看两种方法:
第一种:直接求素数法
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int input = 0; int formernum = 0;
int isprime = 0;
scanf("%d", &input);
formernum = input - 1;
while (formernum > 1) {
if (input % formernum == 0) {
isprime++;
}
formernum--;
}
if (isprime == 0) {
printf("%d是素数", input);
}
else {
printf("%d不是素数", input);
}
return 0;
}
第二种:递归法判断素数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int checkif(int Input,int u) {
int Rec = 3;
if ((Input % (Input - u) == 0)&&(u!=(Input-1))) {
return 0;
}
else if(u!=(Input-1)) {
u++;
Rec=checkif(Input, u);
if (Rec == 0) {
return 0;
}
else {
return 1;
}
}
else {
return 5;
}
}
int main()
{
int input = 0; int u = 1; int receive = 3;
scanf("%d", &input);
if (input == 2) {
printf("2是素数");
}
else {
receive = checkif(input, u);
if (receive == 1) {
printf("%d是素数", input);
}
else {
printf("%d不是素数", input);
}
}
return 0;
}
以上两个方法都可以用于判断一个数字是否是素数,如果给它们套上一个while套子,就可以实现源源不断的连续判断,这都是小事。
这个递归方法十分精巧,我个人还是很满意的,递归的很成功。