输出乘法口诀表--输出素数--输出闰年

本文介绍了使用C/C++实现的三个经典算法案例:打印乘法口诀表、输出指定区间内的素数及判断闰年。通过这些示例,读者可以更好地理解基本的循环结构、条件判断以及数学函数的应用。

打印乘法口诀表

#include<stdio.h>
int main()
{
    int row=0;//定义行号变量
    int list=0;//定义列号变量
    for(row=1;row<=9;row++)//行从第1行到第9行
    {
        for(list=1;list<=row;list++)//第row行的第1列到第row列
            printf("%d*%d=%-2d  ",row,list,row*list);//%-2d:左对齐十进制输出
        printf("\n");//每打印完一行,就换行
    }
    return 0;
}

程序运行结果图:

输出100到200之间的素数

#include<iostream>
#include<cmath>
int main()
{
	int j = 0, i = 0, count = 0;
	for (i = 100; i < 200; i++)
	{
		for (j = 2; j < i; j++)
		{
			if (i%j == 0)//有一个数j能被i整除,所以i不是素数,判断下一个素数
				break;
		}
		//到这里如果i=j说明除了1和i本身没有可以整除i的数字
		if (i == j)
		{
			printf("%d\t", i);
			count++;//统计素数的个数
		}
	}
	printf("\n这个区间素数个数为:%d\n", count);
	system("pause");
	return 0;
}
  • 优化一:
    我们知道偶数肯定不是素数,所以for()循环可以从101开始,每次+2。
  • 优化二:
    我们知道如果一个数不是素数,那么它至少有四个约数:1、该数本身、约数1、约数2,并且约数1*约数2=该数;约数1和约数2一个不大于该数的1/2次方,一个不小于该数的1/2次方(就是该数开根号)。
  • 优化后代码:
#include<iostream>
#include<cmath>
int main()
{
	int j = 0, i = 0, count = 0;
	for (i = 101; i < 200; i+=2)
	{
		for (j = 2; j < sqrt(i); j++)
		{
			if (i%j == 0)//有一个数j能被i整除,所以i不是素数,判断下一个素数
				break;
		}
		//到这里如果i>sqrt(i)说明除了1和i本身没有可以整除i的数字
		if (j>sqrt(i))
		{
			printf("%d\t", i);
			count++;//统计素数的个数
		}
	}
	printf("\n这个区间素数个数为:%d\n", count);
	system("pause");
	return 0;
}

在这里插入图片描述
四年一闰,百年不闰,四百年再闰
我们公历年份是4的倍数的那一年一般都是闰年,但公历年份是100的倍数时,必须是400的倍数才是闰年,否则不是闰年。

打印1000年到2000年之间的闰年

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
	int year=0;
	int count=0;
	for(year=1000;year<=2000;year++)
		{
			if((year%4==0&&year%100!=0)||(year%400==0))
			printf("%d ",year);
			count ++;
	}
	printf("\ncount=%d\n",count);
	system("pause");
	return 0;
}

程序运行结果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值