首先分析一下题意,需要求出2024的因子,因为我们要求与2024互质的数字,为什么呢?因为我们要求互质说直白点就是我和你两个人没有中间人,我们是自然而然认识的,那我们怎么认识呢,就是直接见面对吧,这里我们把公因子想象成媒介,与你有接触的人排除掉,那就不可能有媒介,因为我的所有朋友都不可能是你的朋友了,你的朋友都排除了。求出2024的因子,然后循环排除2024次接触,就是第2024小的与2024互质的数字啦。分析好了就很简单了,只需要学学怎么找因子,接下来的估计你就可以用暴力去解出来了!!!
求因子的代码👇
public static void main(String[] args) {Scanner scan = new Scanner(System.in);int n=scan.nextInt();int count=0;for (int i = 2; i < n; i++) {//自己试试if (n%i==0) {System.out.print(i+" ");}}scan.close();}
①找到2024的因子
②循环递增i,i取余2024的因子,若不能取余ans++
③ans=2024即找到2024小的互质数字,返回
④输出结果
代码如下👇
public static void main(String[] args) {Scanner scan = new Scanner(System.in);
// int n=scan.nextInt();int count=0;int[] arr=new int[14];for (int i = 2; i < 2024; i++) {if (2024%i==0) {arr[count++]=i;}}
// for (int i = 0; i < arr.length; i++) {
// System.out.print(arr[i]+" ");
// }测试点int ans=0;for (int i = 1; ; i++) {for (int j = 0; j < arr.length; j++) {if (i%arr[j]!=0) {ans++;break;}}if (ans==2024) {System.out.println(i);break;}}scan.close();}
public static void main(String[] args) {Scanner scan = new Scanner(System.in);
// int n=scan.nextInt();int count=0;int[] arr=new int[14];for (int i = 2; i < 2024; i++) {if (2024%i==0) {arr[count++]=i;}}
// for (int i = 0; i < arr.length; i++) {
// System.out.print(arr[i]+" ");
// }测试点int ans=0;for (int i = 1; ; i++) {if (judice(i, arr)) {ans++;}if (ans==2024) {System.out.println(i);break;}}scan.close();}public static boolean judice(int num,int[] arr) {for (int i = 0; i < arr.length; i++) {if (num%arr[i]==0) {return false;}}return true;}
第一段代码错误,你能找出来为什么错误吗?
4655 //结果