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

乘法口诀表💥

🌟示例一:打印乘法九九表

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

代码如下:

>//九九乘法表
>#include<stdio.h>
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<stdio.h>
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<stdio.h>
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 = %d\n", count);
	return 0;
}

代码实现效果:在这里插入图片描述

🌟第二种方法

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

代码如下:

#include<stdio.h>
#inlcude<math.h>
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 = %d\n", count);
	return 0;
}

代码实现效果:在这里插入图片描述

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

#include<stdio.h>
#include<math.h>
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 = %d\n", count);
	return 0;
}

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

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 22
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值