题目描述
给你两个整数 和 ,现在让你统计一下有多少个整数 满足 并且 。
输入格式
输入两个整数 和 。
数据范围
输出格式
输出一个整数
输入样例1
10 2
输出样例1
6
我的答案:
#include<stdio.h>
int gcd(int x,int y);
int main(void)
{
int n, m, i,count = 0;//用来计数
scanf("%d%d", &n, &m);
for (i = 1; i <= n; i++)
{
if (gcd(i, n) >= m)//题目要求
{
count++;
}
}
printf("%d",count);
return 0;
}
int gcd(int x,int y)//定义素数查找函数
{
return y?gcd(y,x%y):x;//递归,核心:gcd(y,x%y)
}
该题目涉及到gcd(最大公约数),用递归是一种比较快的算法,如果时间没有要求的话,用循环反复辗转相除也是可以的,当然,还有一种算法是异或运算,这里先不展开来提,等以后有机会,会进行补充的。