判断素数的4种方法

素数定义:质数又称素数。指整数在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数,1和0既非素数也非合数。素数在数论中有着很重要的作用。

**

一言不合直接上代码:

**

#include<stdio.h>
#include<math.h>
//方法一:从1-n挨个判断;
 bool isPrimel_1(int n) 
{	for(int i=2;i<n;i++)
	if(n%i==0)
	return false;
	return true;
}

//方法二: 将被判断数n,进行开方作为判断结束的条件,
//因为开方后的数,是n的最大因子,最大因子之后的数对判断该数是否是素数没有意义。

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

//方法三: 只需要判断到该数的一半即可,如果超过它本身的一半,
//进行求余的结果将永远不会为0,除非是该数对该数的求余。

bool isPrimel_3(int n)  
{   int i;
    if(n%2==0)
    return 0;
    for(i=3;i=n/2;i+=2){
	 if(n%i==0)
     return 0;
     return 1;
}
}

 //方法四:从3-n,只判断奇数,先对一个数进行奇偶判断,若是奇数,
 //只对从3到它本身的奇数进行求余计算,同理若是偶数,一定不是素数。
 
bool isPrimel_4(int n)
{   int i,j=1;
    if(n%2==0)
    return 0;
    else{
    for(i=3;i<=n;i=i+2){
	 if(n%i==0)	
	 j=i;
	 break;
	}
}
   if(j==n)
   return 0;
   return 1;
}

int  main()
{
	int n;
	printf("请输入一个数:");
	scanf("%d",&n); 
	printf("%d,%d,%d,%d\n",isPrimel_1(n),isPrimel_2(n),isPrimel_3(n),isPrimel_4(n));
	return 0;
}

假如李白会编程,数学文理齐全通;若非时代被拘禁,必定偏科不严重。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐