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语言判断一个数为素数,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语言判断一个数为素数,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语言判断一个数为素数,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语言,开发语言

 这种思想和第一种一样,所以也可以像第二,三种那样对代码进行优化,这里就不过多讲解了(累了累了嘞😵😵)

遇到的问题:我思考了好久,在纠结当输入1的时候的这种情况应该怎么去调整代码,大家能看到我每块代码都用了If语句对是不是1进行了判断,(能力有限😥😥)所以我能想到的方法就是通过 if 语句对输入的1进行判断,如果不用这个if语句,那输入1 的时候结果可能就有问题,但我觉得这样会不会太麻烦了,但我又想不出来怎么去调整。

有没有大佬能指点指点我(但是尽量简单点我怕我听不懂😭😭)

(初级大二软工在读小白)用来整理自己的基础知识,如果写的有什么不对的地方,还望各位大佬指出!文章来源地址https://www.toymoban.com/news/detail-822685.html

到了这里,关于C语言--输入一个数判断是否为素数(多种方法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】判断一个数是否为素数(素数求解的N种境界)

    这是一篇关于素数的介绍,以及介绍判断是否为素数的一篇博客,我会将方法一一列举出来方便大家理解和观看。 🍊 我们在C语言的学习中会遇到各种各样的数学问题,每次遇到这些数学问题时,我们一定要学习如何用代码的方法表示出来,加深理解,并且强化自己的能力,

    2024年02月06日
    浏览(52)
  • 超级详细用C语言判断一个数是否是素数

    先上代码: #include stdio.h int main() {         int n,i;     printf(\\\"请输入一个数: \\\");     scanf(\\\"%d\\\",n);     for(i=2;in;i++){         if(n%i==0){             break;         }     }     if(n==i){         printf(\\\"是素数\\\");     }     else         printf(\\\"不是素数\\\"); } 理解: 素数

    2024年02月08日
    浏览(79)
  • 判断一个数是否是素数(Java版)

    目录 素数的定义 求解素数 素数判定法1: 遍历从2到n-1的所有数字,判断是否有可以被n整除的数,如果没有,则为素数。 优化法2: 判定的范围改为[2 -,n/2]。当 in/2 时,则判定为素数。 优化法3: 在Java中判定素数的范围也可以到sqrt(n),(对n开平方)。对应的函数为:Math.sqrt(n

    2024年02月16日
    浏览(53)
  • C 语言 输入一个正整数,程序会利用is_prime函数判断该数是否是素数,如果是素数,输出“%d是素数“,否则输出“%d不是素数“。

    ``` 输入一个正整数,程序会利用is_prime函数判断该数是否是素数,如果是素数,输出\\\"%d是素数\\\",否则输出\\\"%d不是素数\\\"。

    2024年02月11日
    浏览(45)
  • C语言--输入任意一个数,判断它的奇偶性(三种方法)

    C语言学习分享,转载请注明出处。 求余 -- %2。任意一个数对2求余,余数=0是偶数,余数=1是奇数。 运行结果: 一个数按位与上1 -- 1。任意一个数与上1结果=0是偶数,=1是奇数。 运行结果: 判断一个数/2*2之后是否等于它本身 -- num/2*2 。任意一个数/2*2之后再与它自身进行比较

    2024年02月01日
    浏览(32)
  • C语言判断一个数是否是质数的几种常用方法(求100-1000以内的所有质数)

    要用代码判断一个数是否是质数,首先我们需要知道什么什么数称之为质数。质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数)。 以下有三种方法判定质数: 通过从2到n-1每个数均整除

    2024年02月08日
    浏览(64)
  • 【C语言】C语言实现一个函数 判断是否是素数

           欢迎来到南方有乔木的博客!!! 博主主页: 点击点击!戳一戳!! 博主QQ: 1636758318 博主简介: 一名在校大学生,正在努力学习Java语言编程。 穷且意坚,不坠青云之志 ,希望能在编程的世界里找到属于自己的光。 跪谢帅气or美丽的朋友们能够帮我点赞! 请对文中

    2024年02月04日
    浏览(72)
  • 判断一个数是否为质数4种方法

    首先理解什么是质数: 素数就是质素,只能被 1 和 它本身整除 的数字。 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 最小的质数为2; 判断一个数是否为素数,要在2~i-1的数字去试除。如果i被整除,就说明i不是素数。如果2~i-1之间的数字都不能

    2024年02月05日
    浏览(42)
  • 【C语言】一个简单的C语言例子,判断一个数是否为2的幂

    目录 步骤和解释: 示例程序: 代码解释: 十进制转化成二进制: 代码解释: 首先我们需要知道的是2的幂次方在二进制中都是只有一个1的: 所以现在我们可以判断,如果二进制中只有一个1,其他位都是0,则这个数就是2的幂次方; 接着,我们使用这个数-1进行与计算,因

    2024年02月14日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包