判断素数的方法大全

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。

一、直接暴力法求素数

n的素数的判断,我自己只想到了把2到n-1,实际上你要判断到n/2,任何合数最小的因子就是2,那最大的因子就是 n/2,再进一步其实sqrt(n)就够了。

bool prime_number(int a)
{
   
    int i = 0;
    for(i = 2;i<=(int)sqrt(a);i++)
    {
   
        if(a%i == 0)
        {
   
            return false;
        }
    }
    return true;
}

二、筛选法求素数

用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

#include <stdio.h>

int main()
{
   
    
    int n =0;
    scanf("%d",&n);
    int arr[100] = {
   0};
    int i = 0;
    for(i = 2;i<=n;i++)
    {
   
        arr[i-2] = i;
    }
    int count  = 0;
    for(i = 2; i < n; i++)
    {
   
        int j = 0;
        for(j = i+1;j<=n;j++)
        {
   
            if(arr[j-2]%i == 0)
            {
   
            arr[j-2] = 0;
            
            }
        }
    }

    for(i = 2;i<=n;i++)
    {
   
        if(arr[i-2] != 0)
        printf("%d ",arr[i-2]);
        else
            count++;
    }

    printf("\n");
    printf("%d",count);


    return 0;

}

三、用素数表来判断素数

如果一个数不能整除比它小的任何素数,那么这个数就是素数

//target:输入的要查找的数
//count:当前已知的素数个数
//PrimeArray:存放素数的数组
int isPrime(int target, int count, int* PrimeArray) {
   

    int i = 0;
    for (i = 0; i < count; i++) {
   
        if (target % PrimeArray[i] == 0)
            return 0;
    }

    return 1;
}

素数拓展:素数回文

回文既对称的意思,比如一个数字12321,以3为中点对称,如何判断一个素数的回文数字是否是素数呢,我们可以先求出这个素数的回文,再去判断

bool prime_number(long long  a)
{
   
    long long  i = 0;
    for(i = 2;i<=(long long )sqrt(a);i++)
    {
   
        if(a%i == 0)
        {
   
            return false;
        }
    }
    return true;
}

long long huiwen(long long a)
{
   
    long  long tmp  =a;

    while(tmp /= 10)
    {
   
        
        a = a*10+ tmp%10;
    }

    return a;


}

相关推荐

  1. 判断素数方法大全

    2023-12-31 16:08:04       63 阅读
  2. 判断素数方法

    2023-12-31 16:08:04       27 阅读
  3. (c语言)素数判断方法

    2023-12-31 16:08:04       66 阅读
  4. C语言判断一个数是否为素数三种方法(详细)

    2023-12-31 16:08:04       47 阅读
  5. 判断质数(素数):

    2023-12-31 16:08:04       48 阅读
  6. 判断素数/质数

    2023-12-31 16:08:04       28 阅读
  7. C语言 判断素数

    2023-12-31 16:08:04       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-31 16:08:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 16:08:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 16:08:04       82 阅读
  4. Python语言-面向对象

    2023-12-31 16:08:04       91 阅读

热门阅读

  1. STL——常用算术生成算法

    2023-12-31 16:08:04       56 阅读
  2. STL——排序算法

    2023-12-31 16:08:04       57 阅读
  3. 【MySQL从入门到精通】常用SQL语句分享

    2023-12-31 16:08:04       71 阅读
  4. 蓝牙常见断开错误码解释

    2023-12-31 16:08:04       198 阅读
  5. V8 基础篇

    2023-12-31 16:08:04       53 阅读