c语言函数判断素数

Python013

c语言函数判断素数,第1张

楼上说的不错,判断一个数是否是素数就这么算就行。但是楼上程序写的有瑕疵,sqrt不应该写在for里面,而是在for前面赋值,因为sqrt很耗时间。

如果是求类似于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")

}