(1)打印1-100之间的奇数(2)打印9*9乘法口诀表(3)打印100-200之间的素数

1. 每日一言

义城有三盲,真盲,假盲,心盲。


2. 题目(1)打印1-100之间的奇数

(这道题比较基础)

3. 解法思路

3.1 法一:

用循环语句,列出1-100的数并判断该数是否为奇数(能否被二整除)。

3.2 代码:

#include<stdio.h>
int main()
{
	int i = 0;
	for(i=1;i<=100;i++)
	{
		if(i%2==1)
		{
			printf("%d ",i);
		}
	}
	return 0;
}

运行结果:
在这里插入图片描述


3.3 法二:

奇数+2=奇数,用循环语句,令i=1,让i加等2,直到i<=100时终止。

3.4 代码:

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 100; i+=2)
	{
		printf("%d ", i);
	}
	return 0;
}

运行结果:

在这里插入图片描述


4. 题目(2)打印9*9乘法口诀表

4.1 解法思路

使用双层循环,然后打印。

4.2 代码:

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 1; i < 10; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d*%d=%-2d ", j, i, i * j);//%-2d的作用:让数字左对齐
		}
		printf("\n");//换行
	}
	return 0;
}

运行结果:
在这里插入图片描述


5. 题目:(3)打印100-200之间的素数

使用C语言写⼀个程序打印100~200之间的素数,数字中间使用空格分割。


先补充一下素数的概念:素数是指只能被1和它本身整除的正整数。

6. 解法思路:

6.1 法一:使用双层for循环,第一层用来穷举100-200之间的数,第二层用来判断它是不是素数

6.2 代码:

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	int flag = 0;
	for (i = 100; i <= 200; i++)
	{
		flag = 1;//一个是否为素数的标志,1为是,0为不是。
		for (j = 2; j < i; j++)//由素数概念:j从2开始
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag==1)
		{
			printf("%d ", i);
		}
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

6.3 法一优化:

众所周知,偶数肯定不是素数,所以我们可以在外层循环做一下优化,同理在内层也可以做优化。
外层穷举奇数,内层也穷举奇数,因为一个数能被2的倍数的数除尽,那么肯定能被2除尽。

6.4 代码:

#include<stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	int flag = 0;
	for (i = 101; i <= 200; i+=2)//i从101开始
	{
		flag = 1;
		for (j = 3; j < i; j+=2)//j从3开始
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag==1)
		{
			printf("%d ", i);
		}
	}
	
	return 0;
}

运行结果:
在这里插入图片描述

6.5 法一再优化:

再补充一个数学知识点:从 2 到 x-1 中存在可以整除 x 的数,那么在 (根号x)+1 到 x 中也存在⼀个数 d 可以整除 x

6.6 代码:

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	int j = 0;
	int flag = 0;
	for (i = 101; i <= 200; i+=2)//i从101开始
	{
		flag = 1;
		for (j = 3; j <= sqrt(i); j+=2)//j从3开始
		{
			if (i % j == 0)
			{
				flag = 0;
				break;
			}
		}
		if (flag==1)
		{
			printf("%d ", i);
		}
	}
	
	return 0;
}

运行结果:
在这里插入图片描述


7. 结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
想成为大佬那就保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月临水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值