原理:
检验一个数是否为素数(质数),可以通过以下几种方法进行:
1、平方根法:只需将该数除以2到它的平方根之间的每一个数,如果能够被其中任何一个数整除,则该数不是素数;
否则,该数为素数。这是因为一个合数必定有一个小于或等于其平方根的因数。
2、暴力法:遍历所有大于1且小于该数的整数,判断该数是否能被这些整数整除,如果不能,则该数为素数。
1.平方根法
#include<stdio.h>
#include<math.h>
int main()
{
int n,i;
scanf("%d",&n);
if(n<=1)
{
printf("No\n");
return 0;
}
for(i=2;i<=(int)sqrt(n);i++)
{
if(n%i==0)//非素数
{
printf("No\n");
break;
}
}//(int)sqrt(n)<=i*i的开平方
if(i>sqrt(n)) //循环结束后sqrt(n)<i+1
printf("Yes\n");
return 0;
}
2暴力法
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
/*
if(n<=0)
printf("不在素数范围里")
for(i=2;i<n;i++)
{
if(n%i==0)
break;
}
if(i==n)
printf("Yes\n");
else
printf("No\n");
return 0;
/***** 2 方法的优化上面算法*****/
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i=2;i<=n/2;i++)
{
if(n%i==0)
//{
// printf("No");
// break;
/// } //n<=1的情况没有显示
break;
}
if(i==(n/2)+1)
printf("Yes\n");
else
printf("No\n");
return 0;
}