c语言怎么判断一个数是不是素数?

哪位知道,c语言怎么判断一个数是不是素数?
最新回答
影魅

2024-11-07 01:52:15

遍历2到100之间所有整数,然后逐一判断是否为素数,如果是则存入数组。

最终遍历数组输出每个值即可。 具体如下:


1、素数的判断。 

根据素数定义,除了1和本身不存在其它约数的正整数为素数。

所以在C语言中判断n是否为素数可以从2开始到到n-1逐一尝试,如果可以整除说明不是素数。

更进一步,可以从2判断到n/2或者n的算术平方根,如果不存在约数,那么即为素数。

除此以外,判断素数的算法还有素数筛等。

2、判断素数的函数:

以遍历判断约数的方法为例,函数可以编写如下:

int isPrime(int n)//判断n是否为素数,如果是则返回1,否则返回0.
{
    int i;
    for(i = 2; i <= (int)sqrt(n); i ++)//从2到算术平方根遍历。
        if(n%i == 0) return 0;//存在约数,不是素数,返回0.
    return 1;//不存在约数,返回1,表示为素数。
}

3、整体代码示例:

#include <stdio.h>
#include <math.h>
int isPrime(int n)//之前的函数。
{
    int i;
    for(i = 2; i <= (int)sqrt(n); i ++)
        if(n%i == 0) return 0;
    return 1;
}
int main()
{
    int n;
    int a[100];
    int cnt=0;

    for(n = 2;n<=100; n ++)//遍历2到100所有整数。
        if(isPrime(n)) //判断是素数
            a[cnt++] = n;//存入数组。
    for(n = 0; n < cnt; n ++)//遍历存放素数的数组。
        printf("%d ", a[n]);//输出。
    printf("\n");
    
    return 0;
}

运行结果如下: