C语言求素数的几种方法

Posted 杨 戬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言求素数的几种方法相关的知识,希望对你有一定的参考价值。

文章目录

一、判断n是否能被2~n-1整除

输入的数n不能被2-(n-1)整除,说明是素数
输入的数n能被2-(n-1)整除,说明不是素数

注意:1不是素数,素数是指大于1的自然数,除了1和该数自身外,无法被其他自然数整除的数。

法一:


#include<stdio.h>
int main()

    int i, n;
    printf("请输入一个数:"); 
    scanf("%d", &n);
    for (i = 2; i < n ; i++)
    
        if (n%i == 0)
            break;
    
    if (n <=1 ) printf("这不是素数\\n");
    else  if (i < n) printf("这不是素数\\n"); 
    else printf("这是素数\\n");
    return 0;
 

法二:

#include<stdio.h>
int main()

    int i, n;
    printf("请输入一个数:"); 
    scanf("%d", &n);
    if(n<=1)
        printf("这不是素数\\n");
    else
        
        for (i = 2; i < n ; i++)
	    
             if (n%i == 0)
             break;
	     
         if(i>=n)
	        printf("这是素数\\n");
         else
	        printf("这不是素数\\n");
	  
	 return 0;

 

二、判断n是否能被2~√n间的整数整除

输入的数n不能被2-√n整除,说明是素数
输入的数n能被2-√n整除,说明不是素数

方法一:

#include<stdio.h>
#include<math.h>
int main()

    int n,i;
    double k;
    printf("请输入一个数:"); 
    scanf("%d", &n);
    k = sqrt(n);
    for (i = 2; i <= k;i++)
    
        if (n%i == 0) break;
    
    if (n <=1 ) printf("这不是素数\\n");
    else if (i <= k) printf("这不是素数\\n");
    else printf("这是素数\\n");
    return 0;
 


方法二:

#include<stdio.h>
#include<math.h>
int main()

    int n,i,k;
    printf("请输入一个数:"); 
    scanf("%d", &n);
    if(n<=1)
        printf("这不是素数\\n");
    else
    
        k=sqrt(n);
        for (i=2;i<=k;i++)
        
            if (n%i==0)
            break;
        
        if(i>=k+1) 
            printf("这是素数\\n");	
        else 
            printf("这不是素数\\n");
    
    return 0; 


以上是关于C语言求素数的几种方法的主要内容,如果未能解决你的问题,请参考以下文章

C语言 设计并实现一种大素数随机生成方法; 实现一种快速判定任意一个大数是不是是素数方法 跪求啊

C语言中素数的判断方法

c语言用fun函数求n以内的素数,求n=20的值?

[C语言]求最大公约数和求素数

如何用C语言求1至100所有素数的和?

C语言求范围之内素数的和与个数?