判断一个整数是否为素数。输入一个正整数m,判断它是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
#include<stdio.h>
#include<math.h>
int prime(int m);
int main()
{
int m;
scanf("%d",&m);
if(prime(m)){
printf("Yes");
}else{
printf("No");
}
}
//判断素数的函数//
int prime(int m)
{
int i,limit;
if(m<=1){
return 0; //小于1的数不是素数//
}else if(m==2){
return 1; //2就是素数//
}else{ //判断大于2的素数//
limit=sqrt(m)+1;
for(i=2;i<=limit;i++){
if(m%i==0){
return 0; //若m能被某个i整除,则m不是素数,返回0//
}
}
return 1; //若循环正常结束,则说明m不能被任何一个i整除,则m是素数,返回1//
}
}
#include<stdio.h>
#include<math.h>
int main(void)
{
int i,limit,m;
printf("Enter m:");
scanf("%d",&m);
if(m<=1){
printf("No!\n");
}else if(m==2){
printf("%d is a prime number!\n",m);
}else{
limit=sqrt(m)+1;
for(i=2;i<=limit;i++){
if(m%i==0){
break;
}
}
if(i>limit){
printf("%d is a prime number!\n",m);
}else {
printf("No!\n");
}
}
return 0;
}
判断一个数是否为素数,需要检查该数是否能被1和自身以外的其他数整除,即判断m是否能被2--m-1之间的整数整除。用求余运算%来判断整除,余数为0表示能被整除,否则就意味着不能被整除。
由于m不能被大于m/2的数整除,所以区间可以缩小为[2,m/2],数学上还能证明[2,m]。但是考虑到平方根的运算结果是浮点数,而浮点数是近似表示的,不能用于精确比较,为了避免由误差引起的可能错误,将区间扩大为[2,
m+1]。
break语句和continue语句:
break语句强制循环结束。可用于终止循环,或switch语句
continue语句跳过循环体中continue后面的语句,继续下一次循环,一般也与if搭配,只能用于循环。