1.求最大公约数
欧几里得算法
2.题目
描述:
如果两个正整数的大公约数(GCD)为1,则称它们互为质数。例如,1,3,5,7,9…都是相对于2006年来说最好的。
现在你的工作很简单:对于给定的整数m,找到第k个元素,当这些元素按照升序排序时,它相对于m是质数。
3.输入格式
输入:
输入包含多个测试用例。对于每个测试用例,它包含两个整数m (1 <= m <= 1000000), K (1 <= K <= 100000000)。
4.输出格式
输出:
在一行中输出第k个元素。
5.代码部分
代码解析+思路分析 2022/4/15补
import java.util.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
int m,k,p;
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
p = 0;
m = sc.nextInt();
k = sc.nextInt();
for(int i = 1; ;i++)
{
if( i <= m)
if(gcd(m,i) == 1)
p++;
if( i > m)
if(gcd(i,m) == 1)
p++;
if( p == k)
{
System.out.println(i);
break;
}
}
}
}
static int gcd(int a,int b)
{
return a % b == 0 ? b : gcd(b,a % b);
}
}
6.读入数据
测试数据:
754314 85565357
887433 78998654
443168 29822756
710774 30633877
892763 49317550
713581 4003336
113975 3265308
927250 70429410
522503 18994002
689598 59015706
7.读出数据
验证数据:
282637705
125089235
65662215
61480017
49317605
4403736
4213806
176121009
19056111
224300659