【C语言】判断闰年+判断素数

       今天我来讲两个常见的问题:判断某年是否为闰年;判断某个整数是否为素数。

       问题1:判断1000~2000年哪些年是闰年,并输出。

       实现思路:首先必须清楚闰年与非闰年的判别条件。闰年的条件有两个,满足其一即可,⑴能被4整除,但不能被100整除;⑵能被400整除。然后剩余的年份就是非闰年了。

       参考代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int year = 0;
	for (year = 1004; year <= 2000; year+=4)
	{
		if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
		{
			printf("%d",year);
			printf("  ");//将输出的年份用空格隔开
		}
	}
	system("pause");
	return 0;
}

       输出结果:


          说明:

       ⑴由于该问题中年份区间较特殊,易知1000年为非闰年,故选择从1004年开始判断,且由闰年判断条件可让“year”每次自增4。这样做的目的是:提升程序运行效率。以后遇到需用循环解决的问题,我们可以分析问题特点来决定循环变量的自增(或自减)值,以提高程序运行效率。

       ⑵代码中%表示“取余”,如10%4=2,100%10=0。相对应的/表示“取整”,如10/3=3,24/5=4。

       ⑶代码中&&表示“与”或“且”,&&两边的条件必须同时满足;||表示“或”,即它两边的条件只要满足其一即可。

       问题2:找出100~200之间所有的素数。

  实现思路:根据常识,偶数不是素数,所以只对奇数进行判断。然后定义两个变量i和j,让i从101自增至199(外循环,每次自增2);让变量j从2自增至sqrt(i)(内循环),判断i是否能被j整除,只要在j自增的过程整除了i,则终止内循环,i自增一次,再次进入内循环进行判断……当j>sqrt(i) 时,表示i未曾被j整除,即i为一个素数,则输出i。

  参考代码:

#include <stdio.h>  
#include <stdlib.h>  
#include<math.h>  
int main()
{
	int i = 0;
	int j = 0;
	int count = 0;
	for (i = 101; i <= 200; i += 2)//同问题1,对循环变量i的自增量进行确定
	{
		for (j = 2; j <= sqrt(i); j++)//sqrt()为求正平方根函数,在头文件math.h中
		{
			if (i%j == 0)
			{
				break;//直接退出内循环
			}
		}
		if (j>sqrt(i))
		{
			printf("%d",i);
			printf("  ");
			count++;//计数器:每输出一个素数,count自加1
		}
	}
	printf("\ncount=%d\n", count);//最后输出100~200之间素数的个数
	system("pause");
	return 0;
}

          输出结果




  






猜你喜欢

转载自blog.csdn.net/Sunshine_R9H15Chen/article/details/78314386