目录
1.求两个数的最大公约数。
int main()
{
int m = 0;
int n = 0;
scanf_s("%d%d", &m, &n);
int max = 0;
if (m > n)
max = n;
else
max = m;
while (1)
{
if (m % max == 0 && n % max == 0)
{
printf("%d\n", max);
break;
}
max--;
}
return 0;
}
第二种方法:辗转相除法
int main()
{
int m = 0;
int n = 0;
scanf_s("%d%d", &m, &n);
int t = 0;
while (t = m % n)
{
m = n;
n = t;
}
printf("%d\n", n);
return 0;
}
注意:不用比大小。
最大公因数:两数相乘/最大公约数
2.打印1000到2000年之间的闰年。
规则:
1)被4整除,不能被100整除
2)被400整除
int main()
{
int year = 0;
int count = 0;
for (int year = 1000; year <= 2000; year++)
{
if (year % 4 == 0)
{
if (year % 100 != 0)
{
printf("%d ", year);
count++;
}
}
if (year % 400 == 0)
{
printf("%d ", year);
count++;
}
}
printf("\n%d\n", count);
return 0;
}
函数形式
int is_leap_year(int x)
{
return ((x % 4 == 0 && x % 100 != 0) || x % 400 == 0);
}
int main()
{
int y = 0;
int count = 0;
for (int y = 1000; y <= 2000; y++)
{
if (is_leap_year(y) == 1)
{
printf("%d\n", y);
count++;
}
}
printf("\n%d\n", count);
return 0;
}
3.打印100-200之间的素数。
int main()
{
int num = 0;
int t = 0;
int count = 0;
for ( num = 100; num < 201; num++)
{
for (t = 2; t < num; t++)
{
if (num % t == 0)
{
break;
}
}
if (num == t)
{
printf("%d", num);
count++;
}
}
printf("\n%d\n", count);
return 0;
}
改变一下:
int main()
{
int num = 0;
int count = 0;
for ( num = 100; num < 201; num++)
{
int t = 0;
int flag = 1;
for (t = 2; t < num; t++)
{
if (num % t == 0)
{
flag = 0;
break;
}
}
if (flag==1)
{
printf("%d", num);
count++;
}
}
printf("\n%d\n", count);
return 0;
}
优化:如果m=a*b,那么一定有个数在a,b之间,小于m的开平方。
for (t = 2; t <= sqrt(num); t++)
优化:排除偶数
for ( num = 101; num < 201; num+=2)
函数形式
int is_prime(int n)
{
int j = 0;
for (j = 2; j < n; j++)
{
if (n % j == 0)
return 0;
}
return 1;
}
int main()
{
int i = 0;
for (i = 100; i <= 200; i++)
{
if (is_prime(i) == 1)
{
printf("%d ", i);
}
}
return 0;
}
4.写一个函数,只要调用这个函数,num就会增加1。
void AddI(int* p)
{
(*p)++;
}
int main()
{
int num = 0;
Add(&num);
printf("%d", num);
return 0;
}