问题描述
今年是 2020 年, 今天是 10 月 18 日。 请问在 1 到 2020 中, 有多少个数与 1018 互质。
#include <stdio.h>
#include <stdlib.h>
int gcd(int m,int n){
int t=0;
while(n){
t = n;
n = m%n;
m = t;
}
return m;
}
定义函数gcd()
用于计算两个正整数m和n的最大公约数。(可直接背诵)通过循环不断更新m和n的值,并使用临时变量t来交换两个值的位置,直到n为0跳出循环,此时m的值即为最大公约数。
int main(){
int sum=0;
for(int i=1;i<=2020;i++)
{
if(gcd(i,1018)==1)
sum++;
}
printf("%d",sum);
return 0;
}
主函数
使用循环从1到2020遍历每一个数,如果当前数与1018的最大公约数为1(即互质),则sum加1。最后打印出sum的值,表示1到2020中与1018互质的正整数的个数。最后返回0表示程序正常执行结束。