素数:除了1和它本身以外,不能被任何整数整除的数。
例如 17就是素数,因为它不能被2~16的任一整数整除。因此判断一个整数m是否是素数,只需把m被2~m-1之间的每一个整数去除,如果都不能被整除,那么m就是一个素数
简化:m不必呗2~m-1之间的每一个整数去除,只需被2~√m之间的每一个整数去除就可以了。
#include <stdio.h>
#include <math.h>
int main(){
int m,i,k,flag;
printf("set m:");
scanf("%d",&m);
k=sqrt(m);
for(i=2;i<=k;i++){
if(m%i==0){
flag = 0;
break;
}else
flag = 1;
}
if(flag==0||m==1){
printf("no");
}else{
printf("yes");
}
return 0;
}
问:为什么 1 不是素数?
答:整数有一个性质,就是分解质因数的唯一性,即把一个大于1的整数分解质因数,他的形式是唯一的
比如12=2²*3 18=2*3²
而如果1是素数,则分解的形式就唯一的了,因为可以若干个1相乘。所以规定1不是素数