mathematicaの友愛数プログラムについて

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

mathematicaの友愛数プログラムについて

#1

投稿記事 by みみ » 16年前

1~1000内にある 友愛数全て表示するにはどのような感じで打ち込めばよいのでしょうか?
友愛数プログラムでC言語はわかるのですが・・・よろしくお願いします

s-rush

Re:mathematicaの友愛数プログラムについて

#2

投稿記事 by s-rush » 16年前

>友愛数全て表示するにはどのような感じで打ち込めばよいのでしょうか?
というのは1~1000内から計算で友愛数を求めだして、
その結果を表示する
ということですか?


ちなみに、友愛数って1~1000の間だと
(220、284)
の一つしか存在しなかったのでは?

違ったらごめんなさい。

みみ

Re:mathematicaの友愛数プログラムについて

#3

投稿記事 by みみ » 16年前

はい。 友愛数は1000内には1つしかありません;;
それに 結果を表示するための プログラムがわからないということです><
ヘタな日本語ですいません。

dic

Re:mathematicaの友愛数プログラムについて

#4

投稿記事 by dic » 16年前

C言語でしたら
printfが使えます
友愛数などというものがこの世に存在するのですね
実におもしろい

toyo

Re:mathematicaの友愛数プログラムについて

#5

投稿記事 by toyo » 16年前

Mathematicaでの記述法が知りたいということでしょうか
私は触ったことないのでわかりませんが

やそ

Re:mathematicaの友愛数プログラムについて

#6

投稿記事 by やそ » 16年前

規約に
●投稿する内容について
「C言語で何かわからない事についての質問」を、主としていますが、規制はありません。C言語関連以外でも自由に何でも質問してください。


とありますので、どのような言語の質問も問題にはなりませんが、
流石に良解答が得られる保証はできません。

mathematica側のサポートや掲示板、コミュなどで聞かれたほうが解答が得られやすいと思います。

友愛数プログラムでC言語はわかるのですが・
ということはC言語では友愛数のプログラムが組めるということでしょうか?
それとも、C言語は少しは齧っているが友愛数のプログラムが組めないので、教えて欲しい。
できればmathematicaのプログラムで・・・

ということなのでしょうか?
C言語であれば、
「表示するには」と質問されているのでそれに対する回答はすでにあがっているとおり、
printfで問題ないと思います。

1から1000まで約数を計算する。
約数の和を計算し変数(構造体でも配列でもなんでも)などで保管する。
次は・・・
もういちど1から1000のループ
保管しておいた約数の和を取り出す。(A)
(A)で示される数に保管されている約数の和を取り出す(B)
現在のループカウンターと(B)を比較して合致していれば友愛数
合致していなければ次のループへ

てな感じで調べればよい?
でも数が大きくなると約数の和が1000を越えそう・・・
その辺はループ内でチェックしてはじけばいいか。
ちゅーか1000を越えるようならそこで打ち切りか?

全部想像(思いつき)で書いているので
この流れで良いかも分かりませんが、
頑張って下さい。

友愛数とか面白そうですね。

lbfuvab

Re:mathematicaの友愛数プログラムについて

#7

投稿記事 by lbfuvab » 16年前

友愛数ならば(C言語なら)[使用する変数:int sum[1000],i,j]
①1~1000までの約数の和をそれぞれsum[1000]に代入する
②iに0を代入する
③jにsumを代入し、j<1000なら④へ、それ以外は⑤へ
④i==sum[j] かつ j==sumならi,jを表示
⑤iをインクリメントしi>999ならプログラムを終了、それ以外なら③へ

ですかね?

kokosan60

Re:mathematicaの友愛数プログラムについて

#8

投稿記事 by kokosan60 » 16年前

C言語で書いたプログラム
#include <stdio.h>
#define N 10000
int main(void)
{
	int i,j;
	int sum[N]={0};

	for(i=1;i<N;i++){
		for(j=1;j<i;j++){
			if(i%j==0){
				sum+=j;
			}
			/*計算打ち切り*/
			if(sum>=N){
				sum=-1;
				break;
			}
		}
	}
	for(i=1;i<N;i++){
		if(sum!=-1&∑<N){
			if(sum[sum]==i&∑!=i){
				printf("友愛数(%d,%d)\n",sum,i);
			}
		}
	}
	return 0;
}

閉鎖

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