第12回ブルーブリッジカップシミュレーショントーナメント(フェーズ3):質問1
問題の説明:
1から2020まで、2020に対して互いに素な数、つまり、2020の最大公約数が1である数の数。
回答の提出:
これは空欄に記入する質問です。結果を計算して送信するだけです。この質問の結果は整数です。回答を送信するときは、この整数のみを入力してください。余分なコンテンツを入力すると、スコアを付けることができなくなります。
コード:
方法1:
public class Main {
public static void main(String[] args) {
int count=2020;//统计与2020互质的数
int count2 = 0;//统计与2020互质的数
int count1[] = new int[11];
int index = -1;
//找出2020的全部因数,除了1
for(int i=2;i<=2020;i++) {
if(2020%i==0) {
index++;
count1[index] = i;
System.out.println(i);
}
}
for(int i=1;i<=2020;i++) {
for(int j=0;j<count1.length;j++) {
//如果一个数可以整除2020的因数,则他必然与2020不互质
//1——2020共2020个数不满足count--
if(i%count1[j]==0) {
count--;
break;
}
}
}
System.out.println(count);
}
}
方法2:
public class Main {
public static void main(String[] args) {
int count=2020;//统计与2020互质的数
int count2 = 0;//统计与2020互质的数
int count1[] = new int[11];
int index = -1;
//找出2020的全部因数,除了1
for(int i=2;i<=2020;i++) {
if(2020%i==0) {
index++;
count1[index] = i;
System.out.println(i);
}
}
for(int i=1;i<=2020;i++) {
if(check(i,count1)) {
count2++;
}
}
System.out.println(count2);
}
public static boolean check(int i, int[] num) {
for(int j=0;j<num.length;j++) {
//一个数i能整除2020的任意一个因数,返回false
if(i%num[j]==0) {
return false;
}
}
//i不能整除2020的全部因数,返回true
return true;
}
}
これで本日の勉強は終わりです。私の能力と知識が限られているため、文章に何か問題がある場合は、私を批判して訂正してください。何もわからない場合はメッセージを残してください。これからも学び、改善していきたいと思ったら、私に注意を払い、毎日少しずつ進歩してください。これがリードの始まりです。さあ。この記事が役に立ったと思われる場合は、転送、コメントなどを歓迎します。!!