判断互质数的c语言代码
时间: 2023-10-10 11:04:44 浏览: 311
以下是判断两个数是否互质的C语言代码:
```
#include <stdio.h>
int main() {
int a, b;
printf("请输入两个数:\n");
scanf("%d %d", &a, &b);
int c = 1;
for (int i = 2; i <= a && i <= b; i++) {
if (a % i == 0 && b % i == 0) {
c = 0;
break;
}
}
if (c == 1) {
printf("%d和%d是互质数\n", a, b);
} else {
printf("%d和%d不是互质数\n", a, b);
}
return 0;
}
```
这个程序首先从用户输入两个数字,然后使用一个循环遍历2到a和b中较小的那个数之间的所有数字。如果a和b都可以被一个数字整除,则它们不是互质数,将c赋值为0。如果循环结束后c的值仍为1,则a和b是互质数。
相关问题
c语言编写判断两个整数是否互质数
可以使用辗转相除法来判断两个整数是否互质数。具体步骤如下:
1. 定义一个函数gcd,用于计算两个数的最大公约数,代码如下:
```c
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
```
2. 在主函数中输入两个整数a和b,如果它们的最大公约数等于1,则它们是互质数,否则它们不是互质数,代码如下:
```c
int main() {
int a, b;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
if (gcd(a, b) == 1) {
printf("%d和%d是互质数\n", a, b);
} else {
printf("%d和%d不是互质数\n", a, b);
}
return 0;
}
```
注意:以上代码中的printf和scanf函数需要在程序开头引入头文件stdio.h。
欧拉公式求互质数个数C语言
以下是使用C语言实现欧拉函数求互质数个数的代码:
```c
#include <stdio.h>
#include <math.h>
int phi(int n) {
int ans = n;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
ans = ans / i * (i - 1);
while (n % i == 0) {
n = n / i;
}
}
}
if (n > 1) ans = ans / n * (n - 1);
return ans;
}
int main() {
int t, n;
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
printf("%d\n", phi(n));
}
return 0;
}
```
阅读全文