学校里的“吃货协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来(N用键盘输入)。 编写函数int gcd(int a,int b),求a和b的最大公约数。 编写main函数,接收键盘输入的N的值,寻找[1,N-1]区间内的与N的最大公约数为1的数字,输出个数。
时间: 2023-11-18 14:05:18 浏览: 175
xiaoxiaoxudeshop:天天吃货-个人商城从0到1
好的,我明白了。以下是符合您要求的 C 语言代码:
```c
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
int main() {
int n, count = 0;
scanf("%d", &n);
for (int i = 1; i < n; i++) {
if (gcd(n, i) == 1) {
count++;
}
}
printf("%d\n", count);
return 0;
}
```
这个程序中,`gcd` 函数用于求两个数的最大公约数。程序从键盘读入会员数量 `n`,然后在 [1, n-1] 区间内遍历每一个数字,如果它和会长的编号 `n` 的最大公约数为 1,则说明它是新朋友,计数器 `count` 加 1。最后输出计数器的值即可。
阅读全文