解题思路:
对于两个数互质的定义是两数的公约数只有1,我们也可以理解为他们的最大公约数是1
一说到最大公约数就不得不提欧几里得法了
欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。
计算公式gcd(a,b) = gcd(b,a mod b)。
它的时间复杂度是logn级别的
参考代码:
#include <stdio.h> int gcd(int a,int b){ if(a%b == 0) return b; gcd(b,a%b); } int main(){ int i,n; int count = 0; scanf("%d", &n); for(i = 1; i <= n-1; i++){ if(gcd(i,n) == 1) count++; } printf("%d", count); return 0; }
0.0分
156 人评分
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:509 |
A+B for Input-Output Practice (III) (C语言代码)浏览:570 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:517 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1195 |
【蟠桃记】 (C语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:534 |
求圆的面积 (C语言代码)浏览:1668 |
1642题解浏览:712 |
关于C语言变量位置的问题浏览:272 |
K-进制数 (C语言描述,蓝桥杯)浏览:925 |