C语言用筛选法求最小公倍数
时间: 2023-05-30 18:02:44 浏览: 118
C语言经典算法
以下是用筛选法求最小公倍数的C语言代码:
```c
#include <stdio.h>
int main() {
int n, i, j, k, lcm;
printf("请输入一个正整数n:\n");
scanf("%d", &n);
int primes[n + 1];
for (i = 2; i <= n; i++) {
primes[i] = 1; // 初始化为素数
}
for (i = 2; i <= n; i++) {
if (primes[i]) {
// 将i的倍数标记为非素数
for (j = i * i; j <= n; j += i) {
primes[j] = 0;
}
// 计算i的最高次幂
k = i;
while (k * i <= n) {
k *= i;
}
// 更新最小公倍数
lcm *= k;
}
}
printf("1到%d的最小公倍数为%d\n", n, lcm);
return 0;
}
```
该程序使用了一个数组`primes`来记录每个数是否为素数,初始化时都为素数。然后从2开始遍历到n,对于每个素数i,将其所有倍数标记为非素数,并计算i的最高次幂k。最后将所有i的最高次幂相乘,得到最小公倍数lcm。最终输出1到n的最小公倍数。
阅读全文