温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C语言输入一个数判断是否为素数的方法有哪些

发布时间:2023-04-24 17:28:31 来源:亿速云 阅读:142 作者:iii 栏目:开发技术

这篇文章主要介绍“C语言输入一个数判断是否为素数的方法有哪些”,在日常操作中,相信很多人在C语言输入一个数判断是否为素数的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言输入一个数判断是否为素数的方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

 需要解决这个问题,首先我们要明白-------->什么是素数?

(质数)素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

举个例子:4  可以 由2*2=4  和1*4 得到,不符合素数的条件,所以不是素数。

                  5  只能由1*5 得到,符合素数的条件,所以是素数。

1.  第一种方法

这种方法的思想也是最直接最普遍的,假设这个数是n,我们需要判断素数,我们就拿这个数和从(2~~n-1)的每个数去和这个数做取余操作,如果有一个数可以使得余数为0,则这个数不是素数,反之则这个数为素数。

好了接下来我们用代码实现

#include <stdio.h>
int main()
{
	int i=0;
	int j=0;
	printf("输入一个数 "); 
	scanf("%d",&j);
    for(i=2;i<j;i++)
  {
  	if(j%i==0)
  	{
  		printf("%d 不是素数",j); 
  		break;
	  }
  }
    if(j==i)
    {
    	printf("%d 是素数",j); 
	}
	if(j==1)
	{
			printf("%d 不是素数",j); 
	}
	return 0;
	
 }

C语言输入一个数判断是否为素数的方法有哪些

 代码的具体实现就在上面,可能有的同学对if语句中为什么当j==i时,就输出是素数。

 不要着急,我给大家捋捋思路,我们可以思考一下,如果在(2~~j-1)中的每一个数都没满足取余操作后余数为0,那这时我的 i 应该 等于j-1,但我们的 i 由于满足i<j还会继续进行++操作,然后我的 i 就等于j ,此时已经不满足i <j 的条件,我们就会跳出for循环,此时我们就可以认为,当 i==j时,这个数为素数。

2.第二种方法

我们对第一种方法进行优化,我们通过下述例子分析可知,每个数的因数中,其中一个不会超过本身的1/2,所以我们可以利用这个思想对代码进行优化。

我们其实并不需要对(2~~n-1)的全部数进行上述操作,我们可以只对(2~~n/2)的全部数进行上面的操作就可以了,这样可以简化我们的计算范围。

举个例子:4  可以 由2*2=4  和1*4 得到,因数 2,2或1,4,每组其中的一个因数不大于自身(4)的1/2。

好了接下来我们用代码实现

#include <stdio.h>
int main()
{
	int i=0;
	int j=0;
	printf("输入一个数 "); 
	scanf("%d",&j);
	
	for(i=2;i<=j/2;i++)
 {
	if(j%i==0)
		{
			printf("%d 不是素数",j);
			break;
		}
 }
     if(j==1)
		{
			printf("%d 不是素数",j);
		
		}
	if((i>j/2) && (j!=1))
	{
		printf("%d 是素数",j);
	}
	
	return 0;
}

C语言输入一个数判断是否为素数的方法有哪些

3.第三种方法

我们对第二种方法进行优化,我们通过下述例子分析可知,每个数的因数中,其中一个不会超过本身的开方,这样我们又缩小了我们的计算范围,所以我们可以利用这个思想再次对代码进行优化。

举个例子:16 可以 由1*16,2*8和4*4,得到,因数1,16和2,8和4,4每组其中的一个因数不大于本身(16)的开方(4)。

好了接下来我们用代码实现

#include <stdio.h>
#include<math.h>
int main()
{
	int i=0;
	int j=0;
	printf("输入一个数 "); 
	scanf("%d",&j);
	
	for(i=2;i<=sqrt(j);i++)
 {
	if(j%i==0)
		{
			printf("%d 不是素数",j);
			break;
		}
 }
     if(j==1)
		{
			printf("%d 不是素数",j);
		
		}
	if((i>sqrt(j)) && (j!=1))
	{
		printf("%d 是素数",j);
	}
	
	return 0;
}

C语言输入一个数判断是否为素数的方法有哪些

 因为用到了数学中开平方的函数,所以引用了多一个库,这个不做过多讲解,大家自行去了解。

当然判断素数不知有上述的方法,还可以通过函数进行实现。

4.第四种方法(函数实现)

具体的代码思想和第一种方法一样,不再讲解。

好了接下来我们用代码实现

#include <stdio.h>
int judge(int n)
{
	int i=0;
	for(i=2;i<n;i++)
	{
		if(n%i==0)
		return 0;
	}
	if(n==1)
	{
		return 0;
	}
	return 1;
}
int main()
{
 
	int j=0;
	printf("输入一个数"); 
	scanf("%d",&j);
	  if(judge(j)==1)
	  printf("%d 是素数",j);
	else
	printf("%d 不是素数",j);
	return 0;	
}

C语言输入一个数判断是否为素数的方法有哪些

到此,关于“C语言输入一个数判断是否为素数的方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI