//思路:
//素数的定义是指除1和它本身外,不能被任何整数整除的数;
//0和1既不是质数,也不是合数;
//判断一个数是不是素数:
//1.可以用从2到n - 1的数依次试一试能否整除n;
//若存在能整除n的数,则n不是素数;反之,n是素数;
//2.基于1的思路,取n的平方根sqrt;
//由此可知,若在2到sqrt,不存在能整除n的数;
//那么在sqrt到n-1,也不存在能整除n的数;
//因为若在2到sqrt,存在能整除n的数;
//则在sqrt到n-1,必然存在一个能整除n的数与之对应.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
//判断质数函数
int judge_prime_number(){
int n; //用以保存用户输入的数据
double Sqrt = 0.0; //变量Sqrt用以保存求一个数的平方根的结果
int i; //变量i用以遍历所有可能的除数
printf("请输入一个数:\n");
scanf("%d", &n); //保存用户输入的数据
if (n == 0 || n == 1){ //判断0和1的情况
printf("%d即不是素数,也不是合数\n", n); //打印输出结果
return 0; //返回值为0
}
else if (n > 1){
Sqrt = sqrt(n); //将n的平方根赋值给Sqrt
}
for (i = 2; i <= Sqrt; ++i){ //循环遍历尝试所有可能除数
if (n % i == 0){ //若存在能整除n的除数
printf("%d不是素数\n", n); //打印输出结果
break; //跳出循环
}
}
if (i > Sqrt){ //若i大于Sqrt(即不存在能整除n的除数)
printf("%d是素数\n", n); //打印输出结果
}
return 1; //返回值为1
}
//主函数
int main(){
judge_prime_number(); //调用判断素数函数
system("pause");
return 0;
}