如果是求类似于1000以内有多少个素数的话,每个素数的判断方式就不是判断是否能整除从2开始到该数的开方,而是判断是否能整除从2开始到该数开方之间的素数。这样效率会高很多。
#include <stdio.h>#include <math.h>
//判断是否为素数的函数
int isPrime(int n)
{
int i=2
while(i<=(int)sqrt(n))
{
if(n%i == 0)
return 0 //不是素数,直接返回0
else
i++
}
return 1
}
int main()
{
int n,i
printf("输入一个正整数: ")
scanf("%d",&n)
for(i=2i<=ni++)
{
if(isPrime(i)) //调用函数,如果该数为素数,则输出
printf("%d ",i)
}
printf("\n")
return 0
}
示例运行结果:
输入一个正整数: 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
int isprime(int a)//判断素数的函数
{
int i
for(i = 2i <ai++)
if(a % i == 0)
break
if(a == i)
return 1
else
return 0
}
int main(void)
{
int a
if(isprime(a))
printf("%d是素数",a)
else
printf("不是素数")
printf("\n")
}