做题小帮手---真·随手记

注解: default是在case匹配失败的时候才会执行

(一)最大公约数(gcd:Greatest Common Divisor)和最小公倍数(lcm:Least Common Multiple)

1.什么是最小公倍数以及什么是最大公约数?

最小公倍数(Least Common Multiple):两个或多个整数公有的倍数(就是这个两个及以上整数 乘以0以外的整数 产生相同的结果中最小的数值 就是他们的最小公倍数 )

最大公约数(Greatest Common Divisor): 同样是适用于两者或两者以上的除数(就是两个及以上的整数  除以0以外的整数 且可被整除的数   这些整数中最大的那一个  就是他们的最大公约数)

2.如何区分最大公约数和最小公倍数(口诀20字)

最大公约数是除出来的   最小公倍数是乘出来的

3.详解二者求法及(C语言)代码实现

最大公约数(枚举  辗转反侧)

枚举:

int gcd(int x, int y)    //用小的值控制循环
{
	int t = 0;
	int i = 0;
	if (x > y)
	{
		t = x;
		x = y;
		y = t;
	}
	
	for (int i=x; i>=1; i--)
	{
		if (y%i==0 && x%i==0)
		{
			break;
		}
	}
	return i;
}

辗转相除

	if (y > x)    //大数在前
	{
		t = x;
		x = y;
		y = t;
	}
	
	while (y != 0)
	{
		k = x%y;;
		x = y;
		y = k;
	}

最小公倍数

公式法:

	//lcm(a,b) = (a/gcd(a,b)) * b;

二.素数判断

素数也叫质数(prime number) 两个条件 1.大于1的自然数   2.只能被 1 和 它本身整除  

1.依次遍历类型

#include <stdio.h>   //依次遍历类型 

int main(void)
{
	int n = 0;
	int flag = 0;
	scanf("%d", &n);
	
	for (int i=1; i<=n; i++)
	{
		flag = 0;
		for (int j=1; j<=i; j++)
		{
			if (i%j == 0)
			{
				flag++;
			}	
		}
		if (flag == 2)
		{
			printf("%d\n", i);
		}
	}

	return 0;
}

2.遍历此数根号

#include <stdio.h>   //依次遍历类型 
#include <math.h>

int main(void)
{
	int n = 0;
	int flag = 0;
	scanf("%d", &n);
	
	for (int i=1; i<=n; i++)
	{
		if (i>1)
		{
			flag = 0;
			for (int j=2; j<=sqrt(i); j++)
			{
				if (i%j == 0)
				{
					flag++;
				}	
			}
			if (flag == 0)
			{
				printf("%d\n", i);
			}
		}
	}

	return 0;
}

% 即求模 在C语言中只能用于整型之间

(二).闰年判断

写这个解释是因为小卓同学之前弄不明白闰年到底如何判断?以及为什么是这样?

我的理解:

                我们通常说的闰年其实是由两部分组成的(根据1582年以来的置闰规则)        

                                                一: 普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年

                                                二:世纪闰年:公历年份是整百数(即100的倍数),且必须是400的倍数才是闰年;

        所以才有了我们的   ((year%4==0&&year%100!=0) || (year%100==0&&year%400==0))

对于浮点数精度误差导致 100个0.1累加就不是准确的10了. 这也是为什么浮点数比较是否相等时,不能使用==而是要检查差距是否小于可以接受的误差之内 

像这样无论怎么样都达不到循环终止条件的循环,我们称其为死循环 

int 取值范围的大小中 十进制应该为2147483647。

strlen和sizeof的区别是什么?

1.strlen是一个函数,需要头文件    sizeof是一个运算符不需要头文件

2.strlen 不计算空字符 '/0'    sizeof会计算将空字符'/0'

全局变量为什么不提倡使用? (引用自大佬的文章)

代码量少, 功能也少,那全局变量无疑是最适合的同步方式。但是对于代码量大,功能有 多,逻辑又复杂的系统来讲,“稳定”来源于方方面面,其中就需要严谨和方便维护,所以不适用全局变量能够大大的避免出bug, 方便后期维护,这个时候就需要考虑下,尽量少用全局变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值