1.公约数=公因数
因子=因数=约数(含义相同)
【解释】a/b 余数为0,称a能被b整除,a为倍数,b为约数。
质数:比1大,除了1和自身外没有其他因数。
质因数:为质数的质因数。
公约数:a%b = 0, c%b = 0 成b是a和c的公约数
最大公约数:a和c的多个公约数中最大的那个。
最大公约数算法:辗转相除法
【代码】
/*求m和n的最大公约数*/
int GCD(int m, int n)
{
int r;
r = m % n;
while (r != 0)
{
m = n;
n = r;
r = m % n;
}
return n;
}
2.公倍数:
a%x = 0, a%y = 0,称a是x和y的公倍数。
最小公倍数:x和y的公倍数中最小的那个。
算法1:两个数的最小公倍数 = 两个数的乘积/两个数的最大公约数。
算法2:分解质因数。将两个数分别分解质因数,所有质因数乘积就是最小公倍数。
3.最简分数:
分子、分母的公因数只有1的分数。【C编程97题】
4.除数,被除数
6/2,6为被除数,2为除数
叫法:6被2除,6除以2(以是用的意思,用2除6),2除6。
5.sizeof的计算
结构体成员在内存中存放的顺序是按照定义的顺序存放的,按照偏移量法计算结构体大小。
对于结构体套结构体,计算最后一个元素的偏移量,其大小分两种情况:
1)若内嵌结构体定义在外层结构体的第一个位置,就将内嵌结构体拆开,里面的变量当做普通成员正常处理。
2)若内嵌结构体不是在第一个位置,直接计算内嵌结构体的最后一个元素偏移量,得到的偏移量要是内嵌结构体大小的整数倍(其他情况下仅为最大元素的整数倍)。内嵌结构体偏移量计算完以后,下一个外层结构体成员变量依旧等于前一个元素大小加上前一个元素的偏移量。这里前一个元素大小即内嵌结构体的最后一个元素大小。
最后指针变量的大小为4
举几个栗子:
typedef struct test1
{
double a;//0
char b;//8
int c;//9->12
char d;//16
int e;//17->20
int f;//f偏移量为24,结构体大小为24+4=28,因28不是double大小的整数倍,所以改为28->32
}test1;
typedef struct test2
{
short a;//0
char b;//2
int c;//3->4
int d;//8,总大小为8+4=12
}test2;
typedef struct test3
{
short a;//0
struct {
char b;
int c;
double d;//最后一个元素偏移量为2+0=2->16
}ss;//ss本身大小为16
int e;//偏移量16+8=24,结构体大小为24+4=28->32(因为28不是double的整数倍)
}test3;
typedef struct test4
{
struct {
char b;//0
int c;//1+0->4
double d;//4+4=8
}ss;//本身大小为16
short a;//8+8=16
int e;//d的偏移量16+2=18->20,结构体总大小20+4=24,且24是double的整数倍
}test4;
typedef struct
{
double x;
float y;
}Point;
typedef struct
{
int x;//0
Point y[64];//4->1024
int z;//1032+4=1036->1040
}Point1;
typedef struct
{
int x;//0
Point y[64];//4->8+1024=1032,且1032是8的整数倍
}Point2;
int main()
{
int x, y, z1, z2;
x = sizeof(test1);
y = sizeof(test2);
z1 = sizeof(test3);
z2 = sizeof(test4);
}
系统运行结果:
6.乘法原理: