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

【C语言】经典习题分析讲解之乘法表、素数

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

【C语言】经典习题分析讲解之乘法表、素数

目录
  • 乘法口诀表
    • 示例一:打印乘法九九表
    • 示例二:写一个函数输入行数打印乘法表
  • 输出100~200内的素数
    • 第一种方法
    • 第二种方法

乘法口诀表
示例一:打印乘法九九表

分析:产生如下九九乘法表的形式,首先确定要打印出九行九列的乘法表,可以使用for循环产生九行,然后嵌套一个判断需要根据几行产生几列的for循环。

代码如下:

>//九九乘法表
>#include
int main()
{
	int i = 0;
	for (i = 1; i <= 9; i++)
	{
		int j = 0;
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%-2d ", i, j, i * j);
		}
		printf("n");
	}
	return 0;
}
示例二:写一个函数输入行数打印乘法表

输入行数打印乘法口诀表需要产生如下结果。

分析:输入行数,产生一个乘法表,首先我们应该用产生一个输入值,然后它的行是可变的,我们写一个print_table函数,行要变化的话,它的列也会随行数而变,同样用for循环嵌套使用。

代码如下:

#include
int print_table(int n)
{
	int i = 0;
	
	for (i = 1; i <= n; i++)
	{
		int j = 0;
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%-2d ", i, j, i * j);
		}
		printf("n");
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	print_table(n);
	return 0;
}
输出100~200内的素数

首先素数的概念我们需要知道,只能被1和它本身整除的数就叫素数。

第一种方法

分析:假设我们要判断7是否为素数,那我们则需要拿2~6之间的数和7相除。可以看到判断一个数 i 为素数,只要拿 i 和 2 ~ i-1之间的数相除来判断是否整除。那就简单了,我们首先产生100-200之间的数,但是我们可以知道偶数一定不是素数。所以我们从101开始输入。可以假设当令flag变量为1时,i为素数。同时我们也可以计算100-200之间素数个数。

代码如下:

#include
int main()
{
	int i = 0; 
	int count = 0;
	for (i = 101; i <= 200; i+=2)
	{

		//判断i是否为素数
		//拿2-i-1之间的数字去试除i
		int j = 0;
		int flag = 1;//flag是1,表示是素数
		for (j = 2; j <=i - 1; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("ncount = %dn", count);
	return 0;
}

代码实现效果:

第二种方法

分析:第一种的方法在代码实现的方法太繁琐了,需要除到i-1;有没有一种跟简单的方法,当然是有的。例:判断16是否为素数,16不是素数,它可以写成44也可以写成28,可以发现一个数字总是会小于开平方的数字。如果用最小的数字除以开平方的数能整除说明这个数字不是素数。

代码如下:

#include
#inlcude
int main()
{
	int i = 0;
	int count = 0;
	for (i = 101; i <= 200; i+=2)//偶数不可能是素数,产生奇数
	{
		int j = 0;
		int flag = 1;//flag是1,表示是素数
		for (j = 2; j <= sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag == 1)
		{
			count++;
			printf("%d ", i);
		}
	}
	printf("ncount = %dn", count);
	return 0;
}

代码实现效果:

写成函数形式:只要判断函数内,是素数返回1,不是返回0。
代码如下:

#include
#include
int is_prime(int n)
{
	int j = 0;
	for (j = 2; j <= sqrt(n); j++)
	{
		if (n % j == 0)
		{
			return 0;
		}
	}
	return 1;
}
int main()
{
	int i = 0;
	int count = 0;
	for (i = 101; i <= 200; i += 2)//偶数不可能是素数,产生奇数
	{
		if (is_prime(i)==1)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("ncount = %dn", count);
	return 0;
}

写在最后✨:码字不易,如果对你有帮助的话,给个三连支持以下吧或者关注以下,或者点个赞再走叭。感谢!

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

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

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