解决问题: 素数判定。 输入一个正整数 M,判断是否为素数。
素数的定义:除了 1和 m,不能被其他数整除。 1 不是素数。
若 m是合数,必有一个因数属于区间[2,根号m],即若m不能被 [2,根号m]内的任何整数整除,M必为素数。
解决思路:
1,输入正整数 m,遍历 [2,根号m]内的所有整数。
2,判断 m%i==0, true则得出结论 m不是素数,标志变量find置为 1。
3,对 find 和 m判断 ,若其中一个等于 1,则 m不是素数。
代码如下:
#include<stdio.h>
#include<math.h>
int main(){
int i,k,m,find=0;
printf("请输入一个正整数:\n");
scanf("%d",&m);
k = (int)sqrt(m);
for(i=2;i<=k;i++){
if(m%i==0){
find=1;
break;
}
}
if(find==1||m==1){
printf("你输入的数不是素数");
}else{
printf("你输入的数是素数");
}
return 0;
}