c++を使ったプログラミング!できる方いませんか??

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
匿名

c++を使ったプログラミング!できる方いませんか??

#1

投稿記事 by 匿名 » 11年前

プログラムは、いたって簡単です。

~内容~
ある奇数を★とおき、ある奇数を次の式の★に代入→(2×★+1)して、求められた値を●とおき、その●をまた次の式→(2×●+1)に代入して計算する。これを永遠に繰り返す。

それと同時に、(2×   ホニャララ数    +1) によって、求められた値(上のような場合は、●の数)を、nに代入して、(▲×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。

分かる人がいたら、コメントください。
powerfulcolor1218@gmail.com
よろしくおねがいしまーす!

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c++を使ったプログラミング!できる方いませんか??

#2

投稿記事 by みけCAT » 11年前

フォーラムルールをお読みください。
丸投げは禁止です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#3

投稿記事 by non » 11年前

匿名 さんが書きました:それと同時に、(2×   ホニャララ数    +1) によって、求められた値(上のような場合は、●の数)を、nに代入して、(▲×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。
これは、意味がわかりません。▲は何?
non

匿名

Re: c++を使ったプログラミング!できる方いませんか??

#4

投稿記事 by 匿名 » 11年前

みけCAT さんが書きました:フォーラムルールをお読みください。
丸投げは禁止です。

残念ながら課題でも宿題でもありません。
勘違いをされるような行為をしてしまいすみません。
私は、最近c言語について興味を持ったものです。
何卒よろしくお願いします。

匿名

Re: c++を使ったプログラミング!できる方いませんか??

#5

投稿記事 by 匿名 » 11年前

non さんが書きました:
匿名 さんが書きました:それと同時に、(2×   ホニャララ数    +1) によって、求められた値(上のような場合は、●の数)を、nに代入して、(▲×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。
これは、意味がわかりません。▲は何?

ご指摘ありがとうございます。
▲は任意の“奇数”です。仮に3、5、7とおいておけます。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c++を使ったプログラミング!できる方いませんか??

#6

投稿記事 by みけCAT » 11年前

ホニャララ数とはなんですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

匿名

Re: c++を使ったプログラミング!できる方いませんか??

#7

投稿記事 by 匿名 » 11年前

ご指摘されます方々、大変ありがとうございます。
私は、数学好きです。最近c言語と言うものをしりました。
また、このサイトも初です。
ご不快とみなされる行為はおろか、あらしはしません。
未熟なものですみません。
なので、適さない発言をした場合、注意をおねがいします。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: c++を使ったプログラミング!できる方いませんか??

#8

投稿記事 by みけCAT » 11年前

質問に答えて頂けませんか?
フォーラムルール さんが書きました:時々「あああ」とか「あいうえお」などという名前で投稿される方がいますが、
ふざけているように捉えられる場合が多く、熱心に回答してあげようという気を殺いでしまいます。
また、「初心者です」「初心者」「初めまして」「名無し」のような
その場だけの名前、また、多くの人が重複して使うであろう名前は避けてください。
なるべくオリジナルな名前を決め、以後同じ名前を使い続けてください。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

匿名

Re: c++を使ったプログラミング!できる方いませんか??

#9

投稿記事 by 匿名 » 11年前

みけCAT さんが書きました:ホニャララ数とはなんですか?
ご指摘ありがとうございます。
ホニャララ数とは、
ある奇数を★とおき、ある奇数を次の式の★に代入→(2×★+1)して、求められた値を●とおき、
↑↑↑
の事です。

自ら考えたので、うまく説明できませんが…。
尚、表計算ソフトでは、有効数字があるので大きな値の計算ができませんでした…。

匿名(数学革命者)

Re: c++を使ったプログラミング!できる方いませんか??

#10

投稿記事 by 匿名(数学革命者) » 11年前

みけCAT さんが書きました:質問に答えて頂けませんか?
フォーラムルール さんが書きました:時々「あああ」とか「あいうえお」などという名前で投稿される方がいますが、
ふざけているように捉えられる場合が多く、熱心に回答してあげようという気を殺いでしまいます。
また、「初心者です」「初心者」「初めまして」「名無し」のような
その場だけの名前、また、多くの人が重複して使うであろう名前は避けてください。
なるべくオリジナルな名前を決め、以後同じ名前を使い続けてください。
はい。
分かりました。次回から『数学革命者』という名前に指定ただいます。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: c++を使ったプログラミング!できる方いませんか??

#11

投稿記事 by h2so5 » 11年前

数学好きなら ★ とか ホニャララ とか使わないで普通の数式で書いてもらえませんか

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#12

投稿記事 by 数学革命者 » 11年前

h2so5 さんが書きました:数学好きなら ★ とか ホニャララ とか使わないで普通の数式で書いてもらえませんか

すみません。
わかりやすく書こうとしたつもりです…。
改めて書き直します。

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#13

投稿記事 by 数学革命者 » 11年前

今、改めて式の整理を行っております。
明日以降掲載させて頂きますので、しばらくお待ち願います。

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#14

投稿記事 by non » 11年前

匿名 さんが書きました:尚、表計算ソフトでは、有効数字があるので大きな値の計算ができませんでした…。
早めに質問しておきますが、
匿名 さんが書きました: ある奇数を★とおき、ある奇数を次の式の★に代入→(2×★+1)して、求められた値を●とおき、その●をまた次の式→(2×●+1)に代入して計算する。これを永遠に繰り返す。
当然無限大になります。どこまで、計算するのか決めないと計算できません。永遠なんてのは無理です。
匿名 さんが書きました: それと同時に、(2×   ホニャララ数    +1) によって、求められた値(上のような場合は、●の数)を、nに代入して、(▲×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。
1÷2は0.5です。0.5は奇数ですか?
(▲×n+1)÷2 ではないのですか?
non

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#15

投稿記事 by 数学革命者 » 11年前

non さんが書きました:
匿名 さんが書きました:尚、表計算ソフトでは、有効数字があるので大きな値の計算ができませんでした…。
早めに質問しておきますが、
匿名 さんが書きました: ある奇数を★とおき、ある奇数を次の式の★に代入→(2×★+1)して、求められた値を●とおき、その●をまた次の式→(2×●+1)に代入して計算する。これを永遠に繰り返す。
当然無限大になります。どこまで、計算するのか決めないと計算できません。永遠なんてのは無理です。

【ご指摘ありがとうございます】
このC++と言うのは、大きな値が計算できると聞きましたが、はっきり言って、初心者である私はどのくらいの値まで、計算できるか分かりません。
よろしければ、どのくらいの値まで計算できるか教えてくださいませんか?
匿名 さんが書きました: それと同時に、(2×   ホニャララ数    +1) によって、求められた値(上のような場合は、●の数)を、nに代入して、(▲×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。
1÷2は0.5です。0.5は奇数ですか?
(▲×n+1)÷2 ではないのですか?
【ご指摘ありがとうございます】
▲の値は3です。
次の更新で説明いたします。

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#16

投稿記事 by 数学革命者 » 11年前

私が作成したいプログラムは、いたって簡単です。

~内容~
ある奇数をAとおき、Aの値を562949953421311とおきます。

ある奇数をAとおき、ある奇数を次の式のAに代入→(2×A+1)して、求められた値をBとおき、そのBをまた先ほどの式→(2×B+1)に代入して計算する。これを永遠に繰り返す。(表計算ソフトの場合Bの値は844424930131967とでました。)

それと同時に、(2×A+1)、 (2×B+1)それぞれによって、求められた値(上のような場合は、AとBの値)を、nに代入して、(C×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。(Cの値は今回3とおきます。)

分かる人がいたら、コメントください。

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: c++を使ったプログラミング!できる方いませんか??

#17

投稿記事 by beatle » 11年前

non さんが書きました: 1÷2は0.5です。0.5は奇数ですか?
(▲×n+1)÷2 ではないのですか?
数学革命者 さんが書きました: それと同時に、(2×A+1)、 (2×B+1)それぞれによって、求められた値(上のような場合は、AとBの値)を、nに代入して、(C×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。(Cの値は今回3とおきます。)
「次の値が奇数になるまでこの計算を繰り返す」の「次の値」というのは
(C×n+1÷2)の値
ということでよろしいですか。この式は
(C×n + 0.5)
と等価です。Cとnはそれぞれ整数なので全体として xxx.5 のような少数になりますが、これは奇数なのですかと non さんは聞いています。

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#18

投稿記事 by non » 11年前

私の2つの質問に答えてください。でないと、誰も解けません。
non

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#19

投稿記事 by 数学革命者 » 11年前

すみません記事作成途中に返信ができなくて…。
beatle さんが書きました:
non さんが書きました: 1÷2は0.5です。0.5は奇数ですか?
(▲×n+1)÷2 ではないのですか?

すみません。補足です。
(▲×n+1)÷2は、奇数になる場合と、偶数になる場合があります。
例:nが63の場合、(3×63+1)÷2=95となり奇数ですなので、また代入、(3×95+1)÷2=143となり、……→215→323→485→728  偶数になったので終了です。分かりにくくてすみません。
数学革命者 さんが書きました: それと同時に、(2×A+1)、 (2×B+1)それぞれによって、求められた値(上のような場合は、AとBの値)を、nに代入して、(C×n+1÷2)と計算し、次の値が奇数になるまでこの計算を繰り返す。(Cの値は今回3とおきます。)
「次の値が奇数になるまでこの計算を繰り返す」の「次の値」というのは
(C×n+1÷2)の値
ということでよろしいですか。この式は
(C×n + 0.5)
と等価です。Cとnはそれぞれ整数なので全体として xxx.5 のような少数になりますが、これは奇数なのですかと non さんは聞いています。
すみません。偶数です。打ち間違えました。
えっ、(C×n+1÷2)の値は(C×n + 0.5)と等価なんですか?

nil
記事: 428
登録日時: 12年前

Re: c++を使ったプログラミング!できる方いませんか??

#20

投稿記事 by nil » 11年前

数学革命者 さんが書きました: すみません。偶数です。打ち間違えました。
えっ、(C×n+1÷2)の値は(C×n + 0.5)と等価なんですか?
何が偶数なのですか?
1/2は0.5なので等価であると思いますが
数学革命者 さんが書きました: (2×A+1)、 (2×B+1)それぞれによって、求められた値(上のような場合は、AとBの値)
求められた値はAとBではないと思うのですが……?
非表示エリア
この非表示エリアを表示するには、登録し、ログインする必要があります。
最後に編集したユーザー nil on 2012年8月16日(木) 11:40 [ 編集 2 回目 ]

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: c++を使ったプログラミング!できる方いませんか??

#21

投稿記事 by beatle » 11年前

数学革命者 さんが書きました: すみません。偶数です。打ち間違えました。
えっ、(C×n+1÷2)の値は(C×n + 0.5)と等価なんですか?
数学が好きなのにそのへんは抜けてるんですね。
演算子には優先順位というものがありまして、
1 + 2 × 3
という式は 2 × 3 を先に計算するんです。普通の数学では。
だから
1 + 2 × 3
= 1 + (2 × 3)
= 1 + 6
= 7
となるのです。

+ , - , × , ÷
の優先順位は × と ÷ が + と - より高いので、
(C×n + 1÷2) = (C×n + (1÷2)) = (C×n + 0.5)
となるわけです。

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#22

投稿記事 by 数学革命者 » 11年前

数学革命者 さんが書きました:私が作成したいプログラムは、いたって簡単(エクセル)です。

~内容~
ある奇数をAとおき、Aの値を562949953421311とおきます。

ある奇数をAとおき、ある奇数を次の式のAに代入→(2×A+1)して、求められた値をBとおき、そのBをまた先ほどの式→(2×B+1)に代入して計算する。これを永遠に繰り返す。(表計算ソフトの場合Bの値は844424930131967とでました。)

それと同時に、(2×A+1)、 (2×B+1)それぞれによって、求められた値(上のような場合は、AとBの値)を、nに代入して、(C×n+1)÷2と計算し、次の値が偶数になるまでこの計算を繰り返す。(Cの値は今回3とおきます。)

訂正いたしました

nil
記事: 428
登録日時: 12年前

Re: c++を使ったプログラミング!できる方いませんか??

#23

投稿記事 by nil » 11年前

ところでフォーラムルールにある通り
丸投げは禁止です。
現段階で出来ているコードを提示してください。

数学

Re: c++を使ったプログラミング!できる方いませんか??

#24

投稿記事 by 数学 » 11年前

涼雅 さんが書きました:ところでフォーラムルールにある通り
丸投げは禁止です。
現段階で出来ているコードを提示してください。

私には、向いていないので出直します

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#25

投稿記事 by non » 11年前

他の人の引用文の中に、文章を書き加えるのはやめてくださいね。わからなくなるから。

整数として格納できる最大は環境によって変わります。
したがって、もっと大きな桁まで計算したいなら、それなりのテクニックが必要になります。
あなたが、何桁まで必要なのかが知りたいのです。
non

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#26

投稿記事 by 数学革命者 » 11年前

non さんが書きました:他の人の引用文の中に、文章を書き加えるのはやめてくださいね。わからなくなるから。

整数として格納できる最大は環境によって変わります。
したがって、もっと大きな桁まで計算したいなら、それなりのテクニックが必要になります。
あなたが、何桁まで必要なのかが知りたいのです。

はい。
15から32桁までです。

nil
記事: 428
登録日時: 12年前

Re: c++を使ったプログラミング!できる方いませんか??

#27

投稿記事 by nil » 11年前

32桁はあまりに大きすぎるので多倍長演算を学ばなければならないでしょう

まずは段階として
ごく小さな桁数(1~3,4桁)程度で同じ事が出来ますか?

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#28

投稿記事 by non » 11年前

数学革命者 さんが書きました:15から32桁までです。
すると、long long 型でもだめでしょうね。たぶん。コンパイラは何をお使いですか?

また、数学革命者さんはプログラムの経験はどれくらいですか?
例えばC言語ですが、下のプログラムはわかりますか?
それとも、C++ならわかるけど、Cならわからないとか。

コード:

# include<stdio.h>
int main(void)
{
	long long n;
	n=1;
	while(n>0){
		printf("%lld\n",n);
		n=2*n+1;
	}
	return 0;
}
non

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#29

投稿記事 by 数学革命者 » 11年前

まとめてご回答させていただきます。

32桁はあまりに大きすぎるので多倍長演算を学ばなければならないでしょう

まずは段階として
ごく小さな桁数(1~3,4桁)程度で同じ事が出来ますか?


回答:すみませんができません。
私は、先週c言語を知りました。


ページトップ
--------------------------------------------------------------------------------
引用付きで返信する Name: non [URL] ハッカー(129,514 ポイント) Date: 2012年8月16日(木) 12:13 No: 28 (ONLINE) Re: c++を使ったプログラミング!できる方いませんか??数学革命者 さんが書きました:
15から32桁までです。


すると、long long 型でもだめでしょうね。たぶん。コンパイラは何をお使いですか?

回答:コンパイラという言葉は聞いた事があります。
また、数学革命者さんはプログラムの経験はどれくらいですか?
回答:まったくもって、初心者であってプログラムを初作りです。
例えばC言語ですが、下のプログラムはわかりますか?
それとも、C++ならわかるけど、Cならわからないとか。
いいえ、cでもc♯でもc++でも、プログラムの仕方は分かりません

こんなに知識無いのでやっぱりやめようと思います。
ご返信してくださった方々どうもありがとうございました。


non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#31

投稿記事 by non » 11年前

最初に、そう言ってもらえれば、RESの方法がだいぶ違いました。
匿名 さんが書きました:プログラムは、いたって簡単です。
こう書かれれば、プログラムの経験があると誰もが思います。
プログラムの基本から、勉強されてはいかがでしょうか?
勉強していて、わからないことがあれば、またお尋ねください。
non

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: c++を使ったプログラミング!できる方いませんか??

#32

投稿記事 by YuO » 11年前

数学だけで考えてみた。
数学革命者 さんが書きました:ある奇数をAとおき、ある奇数を次の式のAに代入→(2×A+1)して、求められた値をBとおき、そのBをまた先ほどの式→(2×B+1)に代入して計算する。これを永遠に繰り返す。(表計算ソフトの場合Bの値は844424930131967とでました。)

それと同時に、(2×A+1)、 (2×B+1)それぞれによって、求められた値(上のような場合は、AとBの値)を、nに代入して、(C×n+1)÷2と計算し、次の値が偶数になるまでこの計算を繰り返す。(Cの値は今回3とおきます。)
ある奇数をA, Cとし,ai(i∈ℕ0)とci(i∈ℕ+)を以下のように定義する。
a0=A
ai+1=2ai+1
ci=(Cai+1)÷2

までは読み取れた。で,ciが偶数になったら何がしたいのかはわからなかった。
オフトピック
A, Cも
m,n∈ℤとしてA=2m-1,C=2n-1
と書けばよいのかな?そのあたりの数学的な記述方法はわからない……。
想定はm,n∈ℤではなくm,n∈ℕ+な気がするけど気にしないことにする。
あと,Bの出る幕は無いように思える。
ところで,漸化式を解くと,
ai=2i(A+1)-1
ci=2i-1C(A+1)+(1-C)÷2
となるわけですが……。
A,Cは奇数なので,C(A+1)は常に偶数です。
よって,(1-C)÷2の偶奇のみによって,ciが「偶数になるかどうか」が決定します。
つまりは,Cが4k+1(k∈ℤ)であればciは常に偶数(-2k)であり,Cが4k+3(k∈ℤ)であればciは常に奇数(-2k-1)となります。

Cが3の時は,いつまで経ってもciは偶数にならないと思いますが……。

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#33

投稿記事 by non » 11年前

YuO さんが書きました:Cが3の時は,いつまで経ってもciは偶数にならないと思いますが……。
A=3,C=3のとき、
(3×3+1)/2は5
次に
(3×5+1)/2は8
になり偶数になるのですが?

で、大きい桁までするのは面倒だから小さい数までやってみた。
C=3のとき
A=1 2 1
A=3 8 2
A=7 26 3
A=15 80 4
A=31 242 5
A=63 728 6
A=127 2186 7
A=255 6560 8
A=511 19682 9
A=1023 59048 10
A=2047 177146 11
A=4095 531440 12
A=8191 1594322 13
A=16383 4782968 14
A=32767 14348906 15
A=65535 43046720 16
A=131071 129140162 17
A=262143 387420488 18
A=524287 1162261466 19
A=1048575 3486784400 20
A=2097151 10460353202 21
A=4194303 31381059608 22
A=8388607 94143178826 23
A=16777215 282429536480 24
A=33554431 847288609442 25

真ん中の数字は偶数になったときの数字、一番右側は偶数になるまでの回数です。
規則性があるのできっと、数学好きには証明する価値があるのだろう。
ちなみに、C=5にしてみると
A=1 8 2
A=3 8 1
A=7 18 1
A=15 38 1
A=31 78 1
A=63 158 1
A=127 318 1
A=255 638 1
A=511 1278 1
A=1023 2558 1
A=2047 5118 1
A=4095 10238 1
A=8191 20478 1
A=16383 40958 1
A=32767 81918 1
A=65535 163838 1
A=131071 327678 1
A=262143 655358 1
A=524287 1310718 1
A=1048575 2621438 1
A=2097151 5242878 1
A=4194303 10485758 1
A=8388607 20971518 1
A=16777215 41943038 1
A=33554431 83886078 1

A=1のとき以外は常に1になります。

じゃ、c=7のときは
A=1 4 1
A=3 480 4
A=7 88 2
A=15 186 2
A=31 382 2
A=63 774 2
A=127 1558 2
A=255 3126 2
A=511 6262 2
A=1023 12534 2
A=2047 25078 2
A=4095 50166 2
A=8191 100342 2
A=16383 200694 2
A=32767 401398 2
A=65535 802806 2
A=131071 1605622 2
A=262143 3211254 2
A=524287 6422518 2
A=1048575 12845046 2
A=2097151 25690102 2
A=4194303 51380214 2
A=8388607 102760438 2
A=16777215 205520886 2
A=33554431 411041782 2

なんか規則性がありそうななさそうな・・・
non

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: c++を使ったプログラミング!できる方いませんか??

#34

投稿記事 by YuO » 11年前

non さんが書きました:
YuO さんが書きました:Cが3の時は,いつまで経ってもciは偶数にならないと思いますが……。
A=3,C=3のとき、
(3×3+1)/2は5
次に
(3×5+1)/2は8
になり偶数になるのですが?
問題が数学でちゃんと説明されていないが為に,cjって何,という点で解釈が分かれているようです。

私は
cj=(Caj+1)÷2
と解釈しましたが(繰り返すのはai+1を求める作業),nonさんは
c0=ai
cj+1=(Ccj+1)÷2
と解釈されている(繰り返すのはcj+1を求める作業)ようです。

後者の一般項は,
cj=(C/2)j(2i(A+1)+(3-C)÷(C-2))-1÷(C-2)
のようですが,流石にこの一般項が偶数になる条件は私の手に負いかねます。

特殊例で,C=3であれば,
cj=3j2i-j(A+1)-1
なので,Aを2m(2n-1)-1 (m∈ℕ1,n∈ℕ+)と表して (つまり,A+1を素因数分解した時に2がm回出てくる),
j=i+m
が成り立つときに,最初にcjが偶数になります。
# 3jが奇数で(A+1)が偶数なので,(A+1)を2で割っていって最初に奇数になる時が全体が偶数になる時

Poco
記事: 161
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#35

投稿記事 by Poco » 11年前

こんなに知識無いのでやっぱりやめようと思います。
ご返信してくださった方々どうもありがとうございました。
[/quote]

#もう見ていないかも知れませんが。。
C言語とかではなくて、Ruby等、インタラクティブなシェルを提供している環境を利用することをお勧めします。
数学的な何かをやるのであれば、関数型言語から入ったほうが良いかも知れませんし、この手のものは数値の上限など気にする必要はありません。

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#36

投稿記事 by 数学革命者 » 11年前

non さんが書きました:
YuO さんが書きました:Cが3の時は,いつまで経ってもciは偶数にならないと思いますが……。
A=3,C=3のとき、
(3×3+1)/2は5
次に
(3×5+1)/2は8
になり偶数になるのですが?

で、大きい桁までするのは面倒だから小さい数までやってみた。
C=3のとき
A=1 2 1
A=3 8 2
A=7 26 3
A=15 80 4
A=31 242 5
A=63 728 6
A=127 2186 7
A=255 6560 8
A=511 19682 9
A=1023 59048 10
A=2047 177146 11
A=4095 531440 12
A=8191 1594322 13
A=16383 4782968 14
A=32767 14348906 15
A=65535 43046720 16
A=131071 129140162 17
A=262143 387420488 18
A=524287 1162261466 19
A=1048575 3486784400 20
A=2097151 10460353202 21
A=4194303 31381059608 22
A=8388607 94143178826 23
A=16777215 282429536480 24
A=33554431 847288609442 25

真ん中の数字は偶数になったときの数字、一番右側は偶数になるまでの回数です。
規則性があるのできっと、数学好きには証明する価値があるのだろう。
ちなみに、C=5にしてみると
A=1 8 2
A=3 8 1
A=7 18 1
A=15 38 1
A=31 78 1
A=63 158 1
A=127 318 1
A=255 638 1
A=511 1278 1
A=1023 2558 1
A=2047 5118 1
A=4095 10238 1
A=8191 20478 1
A=16383 40958 1
A=32767 81918 1
A=65535 163838 1
A=131071 327678 1
A=262143 655358 1
A=524287 1310718 1
A=1048575 2621438 1
A=2097151 5242878 1
A=4194303 10485758 1
A=8388607 20971518 1
A=16777215 41943038 1
A=33554431 83886078 1

A=1のとき以外は常に1になります。

じゃ、c=7のときは
A=1 4 1
A=3 480 4
A=7 88 2
A=15 186 2
A=31 382 2
A=63 774 2
A=127 1558 2
A=255 3126 2
A=511 6262 2
A=1023 12534 2
A=2047 25078 2
A=4095 50166 2
A=8191 100342 2
A=16383 200694 2
A=32767 401398 2
A=65535 802806 2
A=131071 1605622 2
A=262143 3211254 2
A=524287 6422518 2
A=1048575 12845046 2
A=2097151 25690102 2
A=4194303 51380214 2
A=8388607 102760438 2
A=16777215 205520886 2
A=33554431 411041782 2

なんか規則性がありそうななさそうな・・・


あなたは神です!

私の思ったことを書いてくれました。

他の皆さんにも失礼ですが、まとめて感謝します。

問題は、一番右側は偶数になるまでの回数です。
私の見解ですが、一定の操作をすると、偶数にならないと思うのです。
なので、その数を求めようとこのサイトに質問しました。

あと一歩ですが、パソコンと私の知識では、15桁以上の計算ができませんでした。。



Poco
記事: 161
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#37

投稿記事 by Poco » 11年前

数学革命者 さんが書きました:
あなたは神です!
私の思ったことを書いてくれました。
他の皆さんにも失礼ですが、まとめて感謝します。
問題は、一番右側は偶数になるまでの回数です。
私の見解ですが、一定の操作をすると、偶数にならないと思うのです。
なので、その数を求めようとこのサイトに質問しました。
あと一歩ですが、パソコンと私の知識では、15桁以上の計算ができませんでした。。
問題を再定義していただけませんか?
質問の内容が、また分からなくなっています。
「一定の操作」ってどんな操作ですか?
「その数」って何を指していますか?

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#38

投稿記事 by 数学革命者 » 11年前

Poco さんが書きました:
数学革命者 さんが書きました:
あなたは神です!
私の思ったことを書いてくれました。
他の皆さんにも失礼ですが、まとめて感謝します。
問題は、一番右側は偶数になるまでの回数です。
私の見解ですが、一定の操作をすると、偶数にならないと思うのです。
なので、その数を求めようとこのサイトに質問しました。
あと一歩ですが、パソコンと私の知識では、15桁以上の計算ができませんでした。。
問題を再定義していただけませんか?
質問の内容が、また分からなくなっています。
「一定の操作」ってどんな操作ですか?
「その数」って何を指していますか?
一定の操作、今では、2147483647までは、31回の操作で偶数になりました。
その数、下記の赤い部分が無い=奇数が続く、と言う事です。



引用させてもらいます。
最初の5つだけ赤色にしました。(面倒なので、実際は指定しているのは赤い数字の列全てです。)

A=3,C=3のとき、
(3×3+1)/2は5
次に
(3×5+1)/2は8
になり偶数になります。

で、大きい桁までするのは面倒だから小さい数までやってみた。
C=3のとき
A=1 2 1
A=3 8 2
A=7 26 3
A=15 80 4
A=31 242 5
A=63 728 6
A=127 2186 7
A=255 6560 8
A=511 19682 9
A=1023 59048 10
A=2047 177146 11
A=4095 531440 12
A=8191 1594322 13
A=16383 4782968 14
A=32767 14348906 15
A=65535 43046720 16
A=131071 129140162 17
A=262143 387420488 18
A=524287 1162261466 19
A=1048575 3486784400 20
A=2097151 10460353202 21
A=4194303 31381059608 22
A=8388607 94143178826 23
A=16777215 282429536480 24
A=33554431 847288609442 25

真ん中の数字は偶数になったときの数字、一番右側は偶数になるまでの回数です。
規則性があるのできっと、数学好きには証明する価値があるのだろう。
ちなみに、C=5にしてみると
A=1 8 2
A=3 8 1
A=7 18 1
A=15 38 1
A=31 78 1
A=63 158 1
A=127 318 1
A=255 638 1
A=511 1278 1
A=1023 2558 1
A=2047 5118 1
A=4095 10238 1
A=8191 20478 1
A=16383 40958 1
A=32767 81918 1
A=65535 163838 1
A=131071 327678 1
A=262143 655358 1
A=524287 1310718 1
A=1048575 2621438 1
A=2097151 5242878 1
A=4194303 10485758 1
A=8388607 20971518 1
A=16777215 41943038 1
A=33554431 83886078 1

A=1のとき以外は常に1になります。

じゃ、c=7のときは
A=1 4 1
A=3 480 4
A=7 88 2
A=15 186 2
A=31 382 2
A=63 774 2
A=127 1558 2
A=255 3126 2
A=511 6262 2
A=1023 12534 2
A=2047 25078 2
A=4095 50166 2
A=8191 100342 2
A=16383 200694 2
A=32767 401398 2
A=65535 802806 2
A=131071 1605622 2
A=262143 3211254 2
A=524287 6422518 2
A=1048575 12845046 2
A=2097151 25690102 2
A=4194303 51380214 2
A=8388607 102760438 2
A=16777215 205520886 2
A=33554431 411041782 2

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#39

投稿記事 by non » 11年前

数学革命者 さんが書きました:一定の操作、今では、2147483647までは、31回の操作で偶数になりました。
その数、下記の赤い部分が無い=奇数が続く、と言う事です。
すると、もっと大きい数になったら、偶数にならないということを確認したいということですね。
偶数にならないだろうという予測には根拠があるのですか?
根拠があって、それを実際に確認したいというなら、プログラム作ってもいいけど。
non

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#40

投稿記事 by 数学革命者 » 11年前

non さんが書きました:
数学革命者 さんが書きました:一定の操作、今では、2147483647までは、31回の操作で偶数になりました。
その数、下記の赤い部分が無い=奇数が続く、と言う事です。
すると、もっと大きい数になったら、偶数にならないということを確認したいということですね。
偶数にならないだろうという予測には根拠があるのですか?
根拠があって、それを実際に確認したいというなら、プログラム作ってもいいけど。

根拠は、あります。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: c++を使ったプログラミング!できる方いませんか??

#41

投稿記事 by YuO » 11年前

数学革命者 さんが書きました:
Poco さんが書きました: 問題を再定義していただけませんか?
質問の内容が、また分からなくなっています。
「一定の操作」ってどんな操作ですか?
「その数」って何を指していますか?
一定の操作、今では、2147483647までは、31回の操作で偶数になりました。
その数、下記の赤い部分が無い=奇数が続く、と言う事です。
※青い文字は黒である背景色に対して非常に読みにくいので,引用時に色情報を削除しました。

なぜ,「一定の操作」を数式で記述しないのですか。
その上で,求めたい値を数式中の変数で示せば,回答者が言葉の多義性について解釈をする必要はなくなるのですが。
数学革命者 さんが書きました:私の見解ですが、一定の操作をすると、偶数にならないと思うのです。
コンピューターは,高々有限回の処理において解の有無を出すことはできますが,
無限回の処理において解が無いことを出すことは得意としません。

今回の場合は,先に私がやったように漸化式を作って一般項を出し,その一般項について解析することによってようやく証明が出来ます。
コンピューターが出来るのは,「偶数にならない」であろう候補となる(A, C)の組を見つけだす手伝いくらいでしょうか。
数学革命者 さんが書きました:根拠は、あります。
説明しましょうよ。
その根拠を証明,少なくとも説明するのが数学だと思いますが。
オフトピック
本当に数学が好きなのか,疑問が出てきているところです

non
記事: 1097
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#42

投稿記事 by non » 11年前

ともかく、1606938044258990275541962092341162602522202993782792835301375までやってみた。
C=3のとき、ここまで特異な現象は起きない。もっと、桁増やしますか?
添付ファイル
output.txt
実行結果
(40.32 KiB) ダウンロード数: 137 回
non

Poco
記事: 161
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#43

投稿記事 by Poco » 11年前

non さんが書きました:C=3のとき、ここまで特異な現象は起きない。もっと、桁増やしますか?
根拠の提示待ちで良いのでは?

#ちなみに仕事を15分ほどサボって、Ciの一般項から、Ciが常に奇数となる条件を考えてみましたが、
#そんなA,Cは存在しない、というのが私の結論でした。

nil
記事: 428
登録日時: 12年前

Re: c++を使ったプログラミング!できる方いませんか??

#44

投稿記事 by nil » 11年前

C=3として
偶数にならないということは
A=1 2 1
この赤文字の部分が∞になる時です。
ならばA=∞であるしかないような気がします。

憶測でしゃべっているので数学革命者さんの根拠待ちですが。

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#45

投稿記事 by 数学革命者 » 11年前

non さんが書きました:ともかく、1606938044258990275541962092341162602522202993782792835301375までやってみた。
C=3のとき、ここまで特異な現象は起きない。もっと、桁増やしますか?
nonさんいつもありがとうございます。

根拠です。c=3の場合のエクセル版(私の見解ですが…。)
(ある奇数×3+1)/2の計算結果が、必ず奇数であれば、計算値は無限に大きくなって行くことが証明されます。
 では、その様な始まりの奇数Xがあるか間違っているか、エクセルを使って検証してみました。列Aに上の行から順番に、1・3・5・7・9・11・・・・と奇数を入力しました。列Bに上から順に「=(A1×3+1)/2」「=(A2×3+1)/2」「=(A3×3+1)/2」・・・・と、左のA列の奇数を3倍して1を足し2で割る数式を入力した。列Cに上から順に「=(B1×3+1)/2」「=(B2×3+1)/2」「=(B3×3+1)/2」・・・・B列のセルの計算値を、更に3倍して1を足し2で割る数式を入力しました。同様の式をD列・E列・F列・・・に入力して行き、どんどん3倍して1を足し2で割る計算を行いました。
この結果、全ての列の計算値が奇数となるものがあれば、計算値は無限に大きくなって行きます。そこで、各列において奇数が出現する様子を見てみましょう。B列では、上から2回に1度5・11・17・23・29・35・・と奇数が現れます。C列では、4回に1度17・35・53・71・89・107・125・・・と奇数が現れます。D列では8回に1度53・107・161・215・269・323・・・と奇数が現れます。E列では、16回に1度161・323・485・647・809・・・と奇数が現れます。F列では、32回に1度485・971・1457・1943・2429・2915・・・と奇数が現れます。G列では、64回に1度1457・2915・4373・5831・7289・・・・と奇数が現れます。以後同様に、H列では128回に1度、I列では256回に1度、J列では512回に1度奇数が現れます。
ここまでの計算で、奇数が連続するのは、512行目の1,023・1,535・2,303・3,455・5,183・7,775・11,663・17,495・26,243・39,365の1つです。3倍して1を足し2で割る計算をn回行えば、全ての計算値が奇数になるものは、2のn乗分の1に減少していきます。

従って、計算を行えば行う程、計算値が奇数の連続になるものは1/2・1/4・1/8・1/16・1/32・・どんどん半分に減少していきます。しかし、無限の数の中では、2のn乗分の1は決して0にはなりません。3倍して1を足し2で割る計算をn回する場合、1から数えて2のn乗番目の奇数(又はその倍数番目の奇数)から始めると、n回の計算結果全てが奇数となるとおもいます。

打ち疲れました…。
疑うのもやめませんか?

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#46

投稿記事 by 数学革命者 » 11年前

Poco さんが書きました:
non さんが書きました:C=3のとき、ここまで特異な現象は起きない。もっと、桁増やしますか?
根拠の提示待ちで良いのでは?

#ちなみに仕事を15分ほどサボって、Ciの一般項から、Ciが常に奇数となる条件を考えてみましたが、
#そんなA,Cは存在しない、というのが私の結論でした。


お仕事邪魔してすみません…。

数学革命者

Re: c++を使ったプログラミング!できる方いませんか??

#47

投稿記事 by 数学革命者 » 11年前

涼雅 さんが書きました:C=3として
偶数にならないということは
A=1 2 1
この赤文字の部分が∞になる時です。
ならばA=∞であるしかないような気がします。

憶測でしゃべっているので数学革命者さんの根拠待ちですが。

そうかもしれません。
虚数ですかね??

nil
記事: 428
登録日時: 12年前

Re: c++を使ったプログラミング!できる方いませんか??

#48

投稿記事 by nil » 11年前

はじめA列に入力する数値をn個とすると
x列目に存在する奇数の数はn/(x^2)であり、
n,xは限りなく無限に近い自然数であるとします。
1~A列目n番目の数字(3n+1)までの間で
x列目に偶数が存在しない時、
n/(x^2)=0であり、
これを解いて
n=0これはnが自然数であることに矛盾するため
この命題は偽であると考えます。
最後に編集したユーザー nil on 2012年8月18日(土) 01:21 [ 編集 1 回目 ]

nil
記事: 428
登録日時: 12年前

Re: c++を使ったプログラミング!できる方いませんか??

#49

投稿記事 by nil » 11年前

上はnを自然数と仮定した時で、
n=-1であれば結果は永遠に-1です

数学革命者さんはある奇数Aと言っているだけで自然数正の奇数[訂正]であるとは一言も言っていないのでおそらくこれが答えです。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: c++を使ったプログラミング!できる方いませんか??

#50

投稿記事 by h2so5 » 11年前

ある奇数を a とおくと、n 回計算した時の結果は

(a+1)(3/2)n-1

と表すことができます。(途中経過は、http://goo.gl/8RKFQ)

そうすると、n = log2(a+1) が整数解を持つときに計算結果が偶数になります。(3log2(a+1) - 1)
例)a = 1023 のとき、 log2(1023+1) = 10 で 10回目で偶数になる

n に整数解がない場合でもnを増加させると(a+1)が2nを約数として持たなくなり、
計算結果が整数でなくなってしまうのでやはり奇数が続くことはありません。

Poco
記事: 161
登録日時: 13年前

Re: c++を使ったプログラミング!できる方いませんか??

#51

投稿記事 by Poco » 11年前

数学革命者 さんが書きました:ここまでの計算で、奇数が連続するのは、512行目の1,023・1,535・2,303・3,455・5,183・7,775・11,663・17,495・26,243・39,365の1つです。3倍して1を足し2で割る計算をn回行えば、全ての計算値が奇数になるものは、2のn乗分の1に減少していきます。
従って、計算を行えば行う程、計算値が奇数の連続になるものは1/2・1/4・1/8・1/16・1/32・・どんどん半分に減少していきます。しかし、無限の数の中では、2のn乗分の1は決して0にはなりません。3倍して1を足し2で割る計算をn回する場合、1から数えて2のn乗番目の奇数(又はその倍数番目の奇数)から始めると、n回の計算結果全てが奇数となるとおもいます。

打ち疲れました…。
疑うのもやめませんか?
すみません、これってつまり、n回(有限回)なら計算結果は奇数が続くけど、無限回繰り返そうと試みたら必ず計算結果に偶数が登場する、ってことですとね。
これは必ず計算が終わる根拠ではありませんか?

私の結論は、(CA+1)を(2^n)*pという形に因数分解した場合、nの回数だけ計算が続く、というものでした。
CもAも定数なので、無限に計算が続くことn→∞になることはありません。

#個人的には数学ってのは自分(相手)の論理を疑うものだと思っています。正しいか正しくないか、ってのが肝なので。

アバター
GRAM
記事: 164
登録日時: 13年前
住所: 大阪

Re: c++を使ったプログラミング!できる方いませんか??

#52

投稿記事 by GRAM » 11年前

まぁよくわかりませんけど、プログラミングを使う必要はなさそうですね。
多分問題ないと思いますが、数学あんま好きじゃないんでなんかおかしかったら突っ込んでくださいm(_ _)m

A1 = 1,
An+1 = 2*An + 1

・・・で定義される数列Anを定義する。

An+1 + 1= 2*( An + 1 ) であり、一般項An
An = 2^n - 1 ・・・①で表すことができる。(ただしK^n は Kのn乗を表す)

また次のような数列Cnを定義する。

Cn+1 = (3*Cn + 1) / 2
この数列はC0を、ある定数αとおいた場合、n回目の操作後におけるαの値を表す。

この漸化式は
Cn+1 + 1 = (Cn + 1) * 3 / 2
となるので
Cn = ( C0 + 1 )*(3 / 2 )^n - 1であらわされる。


さて、今ここでC0をAnと置き、m回目の操作後の値であるCmを求めると

Cm = ( An + 1 )*(3 / 2 )^m - 1

であり、m = nのとき

Cn = 3^n - 1となる。(Anをnで表した式①より)
ここで、3^nは常に奇数となるので、3^n - 1は偶数となる。
つまり、Anはn回の操作で必ず偶数となる。

以上説明終了。


数学によるとこういうことらしいですので、奇数が続くことはあり得ませんね。
反例をコンピューターで探すこと自体は別にかまいませんが、規則性が見えた時点で反例の存在は疑わしいですね。
ちなみに証明は面倒なので省きますが、n回目の操作までの間に、偶数が発生すると、その次の数が整数じゃなくなって
しかもその数に3を掛けても決して整数に戻らないため、n回の操作までに偶数が出てくることもないです。
ということですので、nonさんの数列は常に成り立つといえます。

閉鎖

“C言語何でも質問掲示板” へ戻る