C语言与7无关的数 金币 求所有质因子 最大的素数 字符菱形(输出菱形的*)
时间: 2024-03-10 09:45:03 浏览: 62
1. C语言与7无关的数:这个问题其实是一个小数学题,我们可以通过枚举法求解。假设这个数为n,我们可以从1开始逐个判断,如果一个数i既不是7的倍数,也不包含数字7,那么就可以认为它是与7无关的数。代码实现如下:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
if (i % 7 != 0 && i / 10 != 7 && i % 10 != 7) {
printf("%d ", i);
}
}
return 0;
}
```
2. 金币:这个问题其实是一个古老的谜题,又称为“假币问题”。假设有一堆金币,其中有一枚是假的,并且假币比真币轻。现在给你一架天平,问最少需要称多少次,才能找到那枚假币。答案是三次。具体做法如下:
- 第一次将金币分成三堆,分别称两堆,如果两堆重量相等,说明假币在第三堆中;如果两堆重量不等,说明假币在较轻的一堆中。
- 第二次将较轻的那堆金币分成两堆,分别称两堆,如果两堆重量相等,说明假币在剩余的那堆中;如果两堆重量不等,说明假币在较轻的那堆中。
- 第三次将较轻的那堆金币中任意一枚和真币进行比较,如果两枚重量相等,说明假币就是那枚未比较的金币;如果两枚重量不等,说明假币就是那枚被比较的金币。
3. 求所有质因子:这个问题可以通过分解质因数的方法来求解。具体做法如下:
- 先找出一个小于或等于n的质数p。
- 如果n能被p整除,那么p就是n的因子,把p存入结果集合中,然后将n除以p,得到一个新的数m,继续执行第一步。
- 如果n不能被p整除,那么就找下一个质数p,继续执行第一步。
- 当n=1时,说明所有的质因子都已经找到。
代码实现如下:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("%d的所有质因子为:", n);
for (int i = 2; i <= n; i++) {
while (n % i == 0) {
printf("%d ", i);
n /= i;
}
}
return 0;
}
```
4. 最大的素数:这个问题可以通过枚举法来求解。具体做法如下:
- 从n开始往下枚举每一个数i,如果i是素数,就将它存入结果变量中。
- 一直枚举到1为止。
代码实现如下:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int main() {
int n, max_prime = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
printf("%d以内最大的素数为:", n);
for (int i = n; i >= 2; i--) {
if (is_prime(i)) {
max_prime = i;
break;
}
}
printf("%d", max_prime);
return 0;
}
```
5. 字符菱形:这个问题可以通过嵌套循环来实现。具体做法如下:
- 外层循环控制行数,内层循环控制每一行的输出。
- 在内层循环中,需要判断当前位置是否需要输出星号,如果是,就输出一个星号,否则输出一个空格。
代码实现如下:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入菱形的大小:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
printf(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
for (int i = n - 1; i >= 1; i--) {
for (int j = 1; j <= n - i; j++) {
printf(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
```
阅读全文