题目006
求两个数的最小公倍数
分析:
1列举法
先从小到大找出其中一个数的倍数,再判断这个数是不是20的倍数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b;
(void)scanf("%d %d", &a, &b);
int c = a;
int i = 2;
while (c % b != 0)
{
c = a * i;
i++;
}
printf("%d", c);
return 0;
}
//这个代码可以正确地计算`a`和`b`的最小公倍数
我的代码已经改正了之前的逻辑错误,它能够正确计算`a`和`b`的最小公倍数(LCM)。这段代码使用了一个`while`循环,不断增加`i`的值,直到找到`c`是`b`的倍数为止
2.分解质因数法
分别将两个数分解质因数,例如8和20的公倍数里,应当含有8的所有质因数和20的所有质因数
如果整型不匹配,向下取整
从2开始试,试到m/2
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define N 100
int main()
{
int m, n, max, k, i, p[N], r;
printf("请输入两个正整数:");
(void)scanf("%d %d", &m, &n);
if (m > n)
{
max = m / 2;
}
else
{
max = n / 2;
}
i = 0;
for (k = 2; k <= max; k++)
{
while (m % k == 0 && n % k == 0)
{
p[i] = k;
m = m / k;
n = n / k;
i++;
}
while (m % k == 0 && n % k != 0)
{
p[i] = k;
m = m / k;
i++;
}
while (n % k == 0 && m % k != 0)
{
p[i] = k;
n = n / k;
i++;
}
}
r = 1;
for (int s = 0; s < i; s++)
{
r = r * p[s];
}
printf("他们的最大公倍数是%d", r);
return 0;
}
题目007
判断n是不是质数,同上很简单
int panduan(int n)
{
if (n < 2)
return 0;
for (int i = 2; i < n; i++)
{
if (n % i == 0)
return 0;
}
return 1;
}
字符和字符串
%c对应的是单个字符
%s对应的是字符串
char a;
char b[10];
scanf("%c",&a); //输入一个字符
scanf("%s",b); //输入10个字符 下标0~9 没有&符号
初始化
char a[]="happy";
C语言中的字符串必须以'\0'结束,否则无法正确存放在字符数组中
字符串是一个只读型字符型数组,不能够通过指针更改字符串内部数据
c语言的字符串由C的字符数组末尾加上'\0'变形而成
第一个是字符数组
第二个是字符串