アプリ版:「スタンプのみでお礼する」機能のリリースについて

素数でない奇数をOとおくと、Oは3以上の奇数を2個掛け合わせたものと言えるから、

x、yを自然数として
O=(2x+1)(2y+1)
とおけて

O=2x+4xy+2y+1
 =2(x+2xy+y)+1
だから

3以上の素数Pは3以上の奇数全体を考えた上で
x,yは自然数,O=2z+1,z=x+2xy+y,P≠Oを満たすものと表せる…合ってるでしょうか。

質問者からの補足コメント

  • うーん・・・

    Oの補集合がPということです。3以上の奇数で考えているので1のは考えません。
    c++でプログラムを組んでみたので動かしてみてください。
    与えたNに対して2N+1までに含まれる素数でない奇数を網羅するプログラムです。

    int main(void){

    int N,n,P,Q,x,y,a;
    N=100*10; //大きめの数字を入れるとわかりやすいと思います。
    for(n=1;n<=N;n++){
    for(x=1;x<=N;x++){
    for(y=1;y<=x;y++){

    a=x+2*x*y+y;
    Q=2*a+1;
    P=2*n+1;

    if(P == Q){
    printf("%d, ",P);
    }
    }
    }
    }
    }

    なんでかわかりませんが現れる数字が重複します。どう書けば解消させられるかは分からないです。すみません。値が離れてる数字は全て素数になってます。

      補足日時:2022/03/31 05:34
  • つらい・・・

    2N+1までの奇数の列と対応させたとき欠けている数字と言った方が適切かな…。
    伝われー…。

      補足日時:2022/03/31 05:41
  • N=1200で動かした結果の一部です。左上から右に見ていくと2235から2241に飛んでることが分かります。この間にあるはずの2237と2239を素数判定機で調べると素数と出ます。

    同じように見ていくと次は2241から2245に飛んでいることがわかります。この間にあるはずの2243を素数判定機で調べると素数と出ます。

    だから方法自体に間違いはないと思うのですが…。

    「素数について」の補足画像3
      補足日時:2022/03/31 05:55
  • うーん・・・

    Nを入力可能なように改良しました。自然数以外の入力は、弾けないので勘弁してください。

    int main(void){
    int i,N,n,P,Q,x,y,a;
    printf("自然数を入力してください\n");
    scanf(“%d”,&N);

    i=2*N+1;

    printf("3以上%d以下の範囲に含まれる素数以外の奇数は以下の通りです\n",i);


    for(n=1;n<=N;n++){
    for(x=1;x<=N;x++){
    for(y=1;y<=x;y++){

    a=x+2*x*y+y;
    Q=2*a+1;
    P=2*n+1;

    if(P == Q){
    printf("%d, ",P);

    }
    }
    }
    }
    }

      補足日時:2022/03/31 06:18
  • うーん・・・

    結果をよく観察したところ、
    たとえば913は1回だけ出てきます。913を素因数分解すると11*83です。
    他のも試してみると一回だけ出てくる数は種類が異なる二つの素数の積みたいです。
    なんでそうなるのかさっぱりわかりませんが。

    477は2回だけ出てきます。477を素因数分解すると3*3*53です。
    885は3回だけ出てきます。885を素因数分解すると3*5*59です。
    1125は5回だけ出てきます。1125を素因数分解すると3*3*5*5*5です。

    2回以上出てくる奇数にも何か法則がありそうですがお手上げです。

    ただ、0回だけ出てくる奇数は素数ということが言いたいだけなので別にいいんですが…

      補足日時:2022/03/31 06:57
  • へこむわー

    これ以上何を示せばわかってもらえるのかがわからない。何を提示したらいいのか教えて欲しい…。

      補足日時:2022/03/31 07:22
  • うーん・・・

    いいことを思いつきました。

    自然数x,y,zについて、x,yの組み合わせがただ一つに定まれば
    zもただ一つに定まるという制約を満たすような関数fだけを考えます。f(x,y)=x+2xy+y はそのうちの一つです。z=f(x,y)としたときzの値が重複はしてもちゃんと一つに定まります。
    幾何も交えれば自然数x,yがあり、xyz空間において点(x,y)に対して点(x,y,z)がただ一つに定まるようなfのみを考えるということです。

    話をz=x+2xy+yに戻します。x,yが自然数ですからzも自然数ですがzが取れる値に制限がかかります。具体的には
    z=4,7,10,12,13,16…です。

    ここでzが取れない自然数を考えます。¬zとします。
    ¬z=1,2,3,5,6,8,9,11,14,15…

    これらの¬zについて、2×(¬z)+1=PとおくとPが素数になることが容易に計算できるはずです。

      補足日時:2022/03/31 08:57

A 回答 (7件)

素数の語呂合わせあったな


素数計算出来てるのに何故わからないのか?わからない
    • good
    • 0

>なんでかわかりませんが現れる数字が重複します。


O=(2x+1)(2y+1)の分け方に応じて重複するだけでは?

477=(3*3)*53 = 3*(3*53) の2回
885=(3*5)*59=3*(5*59)=(3*59)*5の3回
1125=(3*3*5*5)*5=(3*3*5)*(5*5)=(3*3)*(5*5*5)=3*(3*5*5*5)=(3*5)*(3*5*5) の5回

ですよね。
素数の場合は、そもそも分け方が存在しないので0回ということでしょうかね
    • good
    • 0

3以上の素数Pは3以上の奇数全体を考えた上で


P=2z+1
z=x+2xy+y
z-x=(2x+1)y
となる自然数x,yは存在しない
x<z
2x+1≦z-x
3x≦z-1
x≦(z-1)/3
自然数x≦(z-1)/3に対して
(z-x)は(2x+1)で割り切れない
を満たすものと表せる

main(){

int N,n,P,x,jf;
N=100*10;
for(n=1;n<=N;n++){
jf=0;
for(x=1;x<=(n-1)/3;x++){
if(mod(n-x,2x+1)==0){
jf=1;
printf("%dは素数でない",2*n+1);
break;
}
}
if(jf==0){
P=2*n+1;
printf("%dは素数",P);
}
}
}

n=1, jf=0,x=1>0=(n-1)/3;P=3は素数
n=2, jf=0;x=1>1/3=(n-1)/3;P=5は素数
n=3, jf=0;x=1>2/3=(n-1)/3;P=7は素数

n=4,
jf=1;
x=1;mod(n-x=3,3=2x+1)=0
2n+1=9は素数でない

n=5,
jf=0;
x=1;mod(n-x=4,3=2x+1)=1
x=2>4/3=(n-1)/3;
P=11は素数;

n=6,
jf=0;
x=1;mod(n-x=5,3=2x+1)=2
x=2>5/3=(n-1)/3;
P=13は素数;

n=7,
jf=1;
x=1;mod(n-x=6,3=2x+1)=0
2n+1=15は素数でない
    • good
    • 0

はっきりいうと,


あなたが何をしたいのか (あなたの目的が何なのか)
がわからない.
    • good
    • 0

素数でない奇数が2つの奇数の積になるのは


あたり前だけど、

言いたいことはそれだけではない?

何をわかって欲しいのでしょう?
    • good
    • 0

奇数×偶数=偶数


となるので、素数でない奇数は
・素数でないので約数が存在する
・その約数に偶数は存在しない
つまり、奇数×奇数×・・・
と奇数を複数回掛け合わせたものである。
という簡単な話ではないのですか?
    • good
    • 0

1 は?



あと最後の部分は何を言わんとしているのかさっぱりわからん. そもそもそこに P が出てきてないじゃん.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!