栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言之“输出100~200之间的素数”

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言之“输出100~200之间的素数”

前言

在C语言的学习过程中,会有一个又一个的经典案例,就比如今天讲的这个——素数的输出,也算C语言学习中的一个经典历程。


一、什么是素数
  • 素数又称质数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。
  • 例如:5这个数的因数只有1和5,再也找不出其他的因数了,这样的数就叫做素数。
  • 下图为0~500之间的素数表:
  • 了解了什么是素数后,下面我将用3种不同的方案来实现“输出100到200之间的素数”。

二、输出100到200之间的素数 方案一
  • 是用100~200之间的每一个数字,除以2到其本身,如果此过程中出现了整除,则该数不是素数,如果未出现整除,则该数是素数,将此数进行输出。
    代码如下:
#include 

int main()
{
	int i = 0, j = 0, number = 0;

	for (i = 100; i <= 200; i++)
	{
		for (j = 2; j <= i; j++)
		{
			if (i % j == 0)	
			{
				break;		
			}
		}
		if (i == j)	
		{
			number++;	
			printf("%d.t", number);

			printf("%dn", i);	
		}
	}

	return 0;
}
方案二
  • 这里使用了 sqrt() 函数,sqrt() 函数是平方根函数,功能是计算一个非负实数的平方根,调用时程序要包含(math.h)头文件。
  • 非素数可以写成除了1和它本身相乘的 a * b 方式,而 a、b 之间必有一个小于等于 a b 之积的开平方根。如果这个非素数能够被 a 整除,则相应的肯定可以被 b 整除。
  • 这种方法用100~200之间的数字除以2到它的开平方根(如果该数的平方根是整数则可以除到),在此之间如果出现了整除,则该数不是素数。如果未出现整除,则该数是素数,将此数进行输出。方案二要比方案一更加简便,运行的次数减少。
    代码如下:
#include 
#include 

int main()
{
	int i = 0, j = 0, number = 0;
	for (i = 100; i <= 200; i++)
	{
		for (j = 2; j <= sqrt(i); j++)	
		{
			if (i % j == 0)	
			{
				break;		
			}
		}
		if (j > sqrt(i))
		{
			number++;	
			printf("%d.t", number);

			printf("%dn", i);	
		}
	}
	return 0;
}
方案三
  • 是对方案二的优化处理。
  • 在100~200之间的所有偶数都不是素数,所以可以去除,直接对奇数进行判断,对于方案二来说可以让程序的运行时间减少一半。
    代码如下:
#include 
#include 

int main()
{
	int i = 0, j = 0, number = 0;
	for (i = 101; i <= 200; i += 2)	
	{
		for (j = 2; j <= sqrt(i); j++)	
		{
			if (i % j == 0)	
			{
				break;		
			}
		}
		if (j > sqrt(i))
		{
			number++;	
			printf("%d.t", number);

			printf("%dn", i);	
		}
	}
	return 0;
}

总结

以上就是我用C语言输出”100~200之间的素数“的见解与代码的编写,如果您有更好的方案,欢迎留言评论。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868921.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号