[C言語]白駿9020:キムバッハの推測
構想
少数を探しても大丈夫です.
問題を理解するには、2より大きいすべての偶数を小数+小数として表すことができます.ここまで来たほうがいいですが、ここには条件が必要です.14に示すように、3+11,7+7は、2つの少数差が最も小さい7+7として表すことができる.
まず素数を求めるコードを作成した.また小数+小数も出力されます.
問題は小数+小数出力、最初
while (i < n)
{
scanf("%d", &a);
half = a / 2;
max = 2;
j = 2;
while (j <= half)
{
if (ft_is_prime(j) == 1)
{
if (max < j)
{
max = j;
}
}
j++;
}
printf("%d %d\n", max, a - max);
i++;
}
このように二つに割って、最大値を求める方法で行こうとしたが、うまくいかなかった.ここで後で説明する小さな数値を求めると、a-の小さな数値が小数であるかどうかをチェックする部分には、halfに最も近い数ではなくhalfに最も近い数が現れます.だからグーグルでヒントを見ましたこれはhalfから終了までのヒントです
私は2からhalfまで差の大きい値を出力し、halfから差の小さい値を出力することができます.
私が解読したコード
#include <stdio.h>
int ft_is_prime(int nb) // 소수찾기
{
int i;
i = 2;
if (nb < 2)
return (0);
while (i <= (nb / i))
{
if (nb % i == 0)
return (0);
i++;
}
return (1);
}
int main()
{
int a, n, i, half;
scanf("%d", &n);
i = 0;
while (i < n)
{
scanf("%d", &a);
half = a / 2;
while (half <= a)
{
if (ft_is_prime(half) == 1)
{
if (ft_is_prime(a - half) == 1)
break;
}
half++;
}
printf("%d %d\n", a - half, half);
i++;
}
}
これは、小数を検索し、a-half値が小数である場合に出力を中断する方法です.halfが増加するのは、突き当りまで行く方法なので、印刷時に値が変わります.他の人のコードも似たような論理です.しかし、少数を求める方法には違いがある.私はis primeで行います.まずこれを理解して、後で他の方法が必要なら、その時になってから勉強しましょう.私は混同するのが怖いので、他の人のコードを追加しません.
Reference
この問題について([C言語]白駿9020:キムバッハの推測), 我々は、より多くの情報をここで見つけました https://velog.io/@kimmainsain/C언어-백준-9020-골드바흐의-추측テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol