算法1
对整数n在[2,n-1],中做除法,如果出现能被整除的数,则n为合数,否则为素数。
#include<stdio.h>
int IsPrime(int n)
{
int i;
for (i = 2;i < n;i++)
{
if (n % i == 0)
break;
}
if (i < n)
return 0;
else
return 1;
}
int main(void)
{
int n;
printf("请输入一个大于3的整数:\n");
scanf_s("%d", &n);
if (IsPrime(n) == 1)
printf("%d是素数\n", n);
else
printf("%d不是素数\n",n);
return 0;
}
算法2
只需判断[2,]即可,从而减少循环次数(解释:假设n=xy,则一种情况是x,y中必有一个数小于,而另一个大于,不可能同时小于或者同时大于,第二种情况是x=y=。)只需添加math库和修改部分IsPrinme代码
#include<stdio.h>
#include<math.h>
int IsPrime(int n)
{
int i;
for (i = 2;i <=sqrt(n);i++)
{
if (n % i == 0)
break;
}
if (i<=sqrt(n))
return 0;
else
return 1;
}