(c语言)素数判断的四种方法

方法一: 

#include <stdio.h>               //方法一:在2到n-1之间任取一个数,如果n能被所取的数整除则不是素数,否则就是素数       
int main()                        //因为我们只需要循环到i<n,而不是i<=n,否则就会出错。
{
    int i, n;
    printf("请输入数值 ");
    scanf("%d", &n);
    if (n<=1)
    {
        printf("数据错误,不在取值范围内\n");
        return 0;
    }
    for (i = 2; i <= n - 1; i++)       //在2到n-1之间任取一个数
    {
        if (n % i == 0) 
        {
            break;
        }
    }
    if (i == n)
    {
        printf("这是素数\n");         //直到循环结束都未被整除,是素数
    }
    else
    {
        printf("这不是素数\n");        //能被整除,不是素数
    }
    return 0;
}

方法二: 

#include<stdio.h>                    //方法二:在2到n/2之间任取一个数,如果n能被所取的数整除则不是素数,否则就是素数
int main()
{
    int n, i;
    printf("请输入数值: ");
    scanf("%d", &n);
    if (n<=1)
    {
        printf("数据错误,不在取值范围内\n");
        return 0;
    }
    for (i = 2; i <= n / 2; i++)     //在2到n/2之间任取一个数
    {
        if (n % i == 0)
        {
            printf("这不是素数\n");      //能被整除,不是素数
            break;
        }
    }
    if (i == n / 2 + 1)
    {
        printf("这是素数\n");           //循环结束还不能被整除,是素数
    }
    return 0;
}

方法三: 

#include<stdio.h>                       //方法三:在2到sqrt(n)之间任取一个数,如果n能被整除则不是素数,否则就是素数 
#include <math.h>                       //引用数学公式的声明
int main()
{
    int i, j, n;
    printf("请输入数值: ");
    scanf("%d", &n);
    j = (int)sqrt(n);                   //j为n开平方根,也就是根号下n
    if (n<=1)
    {
        printf("数据错误,不在取值范围内\n");
        return 0;
    }
    for (i = 2; i <= j; i++)            //在2到sqrt(n)之间任取一个数
    {
        if (n % i == 0)
        {
            break;
        }
    }
    if (j < i)
    {
        printf("这是素数\n");            //循环结束还不能被整除,是素数
    }
    else
    {
        printf("这不是素数\n");          //被整除,不是素数
    }
    return 0;
}


方法四:质数分布的规律:大于等于5的质数一定和6的倍数相邻。

猜你喜欢

转载自blog.csdn.net/2301_79580018/article/details/132649977