トップページ⇒tech
88コメント26KB

C言語に自信のある方教えてください

■ このスレッドは過去ログ倉庫に格納されています
0001迷える学生NGNG
10進数{1〜409}までの80個の素数をすべて掛け算
すると10進数で170桁くらいになると思うんですけど
それをC言語でどうやって配列表現したらいいんでしょうか?
まともにすべて掛け算すると当たり前ですけどオーバーフロー
しちゃうんです。符号なしlongでだいたい10進10桁くらい
しか表現できないので。
やはりUBASICに頼るしかないのでしょうか?
0002 NGNG
>>1
アルゴリズム辞典に多倍精度長の四則演算が載ってるから読め
それで終了。
0003デフォルトの名無しさんNGNG
          /~ヽ              /:ヽ
          {:::::::::\        /.:::::::::}
          ヽ、::::::::\,.....-.―-/.:::::::::::ノ
           ゝ,.-‐-、,.‐‐-、::::::::::::::::"く
          /    /⌒丶 ヽ._::::::::::::::ヽ  では削除されるまでの間
         /   ,ィ〃//゙ヽ. ヾ ヽ::::::::::::}  大耳モナーが
         /  ∠_     `'、   ゝ:::::::::j  ここを管理しておきます♪
        {  /,.=、`   ,.ニ ̄`メ ヾ }:::::::メ
        ノ)イ1仆..}    ri⌒ヾ ソりト、::::/
          リソ,,`ー' .   、、::;ナ 仆⌒!ソ
     (\_/八    、_   ̄ '' ,.!|f_ノリ (\_/)
     ( ´∀`)リヽ.         ィルリ从メ   (´∀` ∩
     (.つ  つ   ` ー┬   トx     (つ   丿
      ) ,) ) '^~  ̄く(__ ___/ ,ゝ 、   (  ヽ,,ノ
      (,,_,,_,,)    /ソc< r一'~´  ヽ、 (,,゙__,,)
      /   レヘ、___//.:::::.ヽ\      入/   |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0004迷える学生NGNG
>>2
ありがとうございます。とりあえず今からアルゴリズム辞典
買いに行ってみようかな。
0005電気科の人NGNG
Cプログラミングやってると
役立つなあ・・・。と思うことってどんな時ですか??

おいらは3週間(条件分岐まで終わった)
Cプログラミングやったけど
今のところは全然役立っていません。
0006デフォルトの名無しさんNGNG
>>5
キミには一生関係ない話
0007デフォルトの名無しさんNGNG
>>5
よりシステムに近い関数が使える程度ってことでしょうか。
あとは、より多くのプログラマと実装レベルでお話しできる。
それ以外はあんまり使えると思った事はありません。
0008デフォルトの名無しさんNGNG
>>1
A,Bは2nビット、A1,A0,B1,B0はnビット
Nは2のn乗、2Nは2の2n乗

A = N*A1 + A0
B = N*B1 + B0
として、
A*B = {N*A1 + A0}*{N*B1 + B0}
      :
  = (2N+N)*A1*B1 - N*(A1-A0)(B1-B0) + (N+1)*A0*B0

でやる。これ定説。
0009デフォルトの名無しさんNGNG
なんの目的も無くプログラムを勉強しはじめて、
3週間もたってから「これって何の役に立つの?」って
疑問をもつような人もいるんだ。
0010デフォルトの名無しさんNGNG
学校で2年(構造体あたりまで)習って
1年何もしなかったら
Hello Worldで困ってしまいました
0011デフォルトの名無しさんNGNG
>>5
>>7
何と比べてかを抜かして比較の話を進めているところが
デンパを受信できない折れには痛いところだが、
C言語よりも日本語の方が数万倍役に立ちます。
00127NGNG
>>11
あなたの日本語も受信できませんでしたが...。
001311NGNG
>>12
そうですか。それは残念です。
がんばって日本語を受信できるようになってくださいね。
0014デフォルトの名無しさんNGNG
>>8
> A*B = {N*A1 + A0}*{N*B1 + B0}
>       :
>   = (2N+N)*A1*B1 - N*(A1-A0)(B1-B0) + (N+1)*A0*B0
どこの厨房だ。
00158NGNG
>>14
何を厨房といってる?
指摘してちょ。
0016電気科の人NGNG
C言語で
「できること・できそうなこと」
を知りたいんです。
0017デフォルトの名無しさんNGNG
>>5
 研究で色々なデータとりたいときとか、プログラムのバイトでお金が
もらえたときとか。
0018デフォルトの名無しさんNGNG
>>16
あんたがどういう動機でCをやってるのかを教えてください。
0019デフォルトの名無しさんNGNG
>>16
日本語よりも具体的にシステムを記述できる。
うまくやれば、実装もできる。
0020デフォルトの名無しさんNGNG
>>18
「よく目にするし、流行ってそうだなぁ」じゃないの?
00217NGNG
>>16
プログラミング言語は思想を具現化するための道具です。
もちろん言語によって得意な面・不得意な面はありますが、
いわゆる工業強度のあるプログラミング言語ならば、かなりの
事が実現可能です。C 言語はこれに当てはまります。

「できない事」は「貴方が思い付かない事」です。
0022デフォルトの名無しさんNGNG
入門書に載ってない関数が出てきてガカーリ
0023デフォルトの名無しさんNGNG
>>16
>C言語で
>「できること・できそうなこと」
>を知りたいんです。

Cをはじめて3週間もたってから聞くようなことなんだろうか。

てか、クソスレ上げまくるのはやめれよ。
0024電気科の人NGNG
>18
C言語をやっている目的(?)は
C言語を勉強したい。
C言語でソフトが作りたい(考えてたのはほとんどゲームソフト)。
んな感じです。
0025デフォルトの名無しさんNGNG
>プログラミング言語は思想を具現化するための道具
とりあえずマルクス主義あたりをたのむ
0026電気科の人NGNG
>23
いや、、目標っすから。
002714NGNG
>>15
二項式の展開ができない辺り。
中学でやるとこじゃなかったっけ。
0028デフォルトの名無しさんNGNG
>>24
Cで出来ることは、Cの勉強とゲームソフトの作成です。
0029デフォルトの名無しさんNGNG
>>24

ゲームソフトならC言語の「できること」です。

でも多分Cだけ覚えてもだめで、
覚えることとしては、グラフィクスライブラリとか
の方が多いかも…
0030デフォルトの名無しさんNGNG
>>25
とりあえず仕様のバグを直しといて。
0031デフォルトの名無しさんNGNG
>>25
言語には得意不得意があって
マルクス主義ならCよりロシア語のほうが適切かと。
0032デフォルトの名無しさんNGNG
自分、プログラム学びたくてココに来たのですが
Basic、C++どっちを学ぼうか迷ってます
どっちが良いですかね?
0033デフォルトの名無しさんNGNG
Basic
インタープリタはお手軽でいいよ。
0034電気科の人NGNG
C言語の使い道(考え方っぽいもの)
が広まりました。ありがとうございました。
0035デフォルトの名無しさんNGNG
ビルドするたびにリソースが減っていくんだけどなぜ?
0036デフォルトの名無しさんNGNG
漏れはHTML厨房なんだけど、ある日、HTML Tidy ってものを知ったわけ。
http://www.w3.org/People/Raggett/tidy/

これってGPLで公開されてて、メーリングリストで、みんなで改造しまくってて、すっごく盛り上がってるんだけど、Cで書かれてるんだよね。
Cがわからないと、みんなの話についていけないわけ。
漏れはこれがきっかけでCの勉強をはじめた。
003715NGNG
>>27
はぁ?省略してるだけだろ。
式の変形ぐらい自分でやってくれ。
0038Kusakabe YouichiNGNG
In article >>5, 電気科の人/5 wrote:
> おいらは3週間(条件分岐まで終わった)

それって教科書がいけないのでは(^^;

> 今のところは全然役立っていません。

それは必然性がないからでしょう。
「やりたいこと」がないと、「役に立った」と思えるわきゃないじゃん。

「どういうことをやりたくなったときに便利か」ぐらいなら教科書で示す
こともできるが、それをやっていない本は多い。
0039Kusakabe YouichiNGNG
In article >>16, 電気科の人/16 wrote:
> C言語で「できること・できそうなこと」を知りたいんです。

じゃあそれがわかるような本を買えばいいのでは?
004014NGNG
>>37
すまん。勘違いしてた。
つーかこれって省略になってんのか?
かえって複雑になってそうだがそれはわざと?
0041デフォルトの名無しさんNGNG
>>8
> Nは2のn乗、2Nは2の2n乗

俺はここに興味アリ
俺の固い頭では2Nはどうやっても2のn+1乗なんだが・・・
00428NGNG
>>41

記号として、そう定義しただけです。
「2N」を「M」と書き直しても構いません。
紛らわしくてゴメソ。
00438NGNG
>>40
2nビットの乗算がnビットの乗算でできるようになります。
だからこの式を使って再帰的にビット長を短くしていけば
65536ビットの乗算を32ビットの乗算の繰り返しで演算できます。

#単純に筆算のやり方でやるより速いですよ。
0044デフォルトの名無しさんNGNG
>>43
なるほど、乗算を一つ減らせるということね。
乗算と加減算のスループットに大差のないアーキテクチャではあまり効果ないかも。
004543NGNG
>>44
そっかなー。多倍長では結構速いと思うけど。
まあいいや。
0046デフォルトの名無しさんNGNG
>>44
つか、65536ビットなんて扱えなかったりするだろうが。
0047デフォルトの名無しさんNGNG
>>46
展開することによって乗算するのは32bit*32bit=64bitだけで済むように
なるんだから問題ないんじゃない?
004847NGNG
と思ったが、再帰する回数自体が変わるから、結構演算コストにひびいてくるね。
0049さくらたんハァハァNGNG
>>39
作ってわかるようになる本てあるんですかねー。
0050Kusakabe YouichiNGNG
In article >>49, さくらたんハァハァ/sage/49 wrote:
> 作ってわかるようになる本てあるんですかねー。

「作らなくてもわかる」本のほうがむずかしいと思うぞ。
0051仕様書無しさんNGNG
>>49
まずは、蟹飯から始めたら?
良くも悪くも、始めに読んだ本に影響されるので、
変な入門書で、取り返しのつかない癖つけるより、
難しくても蟹飯がいいよ。
0052デフォルトの名無しさんNGNG
「蟹飯」って蟹チャーハンの事?
0053デフォルトの名無しさんNGNG
>>52
ざっつらいと
0054仕様書無しさんNGNG
>>52
一般には蟹チャーハンのことだけど...(汗
K&R(カーニハン&リッチ)の書いた本
0055Kusakabe YouichiNGNG
In article >>51, 仕様書無しさん/sage/51 wrote:
> まずは、蟹飯から始めたら?

「かにめし」? ;)

> 良くも悪くも、始めに読んだ本に影響されるので、

初め
0056デフォルトの名無しさんNGNG
> 良くも > 良くも悪くも、始めに読んだ本に影響される
ので、 悪くも、始 > 良くも悪くも、始めに読
> 良くも悪くも、始めに読んだ本に影響されるので、 んだ
本に影響されるので、 めに読んだ本に影響されるので、
> 良くも悪くも、始 > 良くも悪くも、始め > 良くも悪くも
、始めに読んだ本に影響されるので、 に > 良くも悪
くも、始めに読んだ本に影響されるので、 、 読読んだ本に >
良くも悪くも、始めに読んだ本、 読に影響されるので、 影響されるので、 > 良くも悪くも、始めに読んだ本に影響
されるので、 めに読ん、 読だ本に影響されるので、 > 良
くも悪くも、始めに読んだ本に影響されるので、
0057デフォルトの名無しさんNGNG
厨房ほど変なあて字を使いたがるな。
(「厨房」も当て字か)
0058仕様書無しさんNGNG
ごめん、このスレを荒す気はありません。
K&Rを一度は理解するまで熟読することをお勧めします。>all
0059Kusakabe YouichiNGNG
In article >>57, デフォルトの名無しさん/sage/57 wrote:
> 厨房ほど変なあて字を使いたがるな。

同意しますが、
あさにあなたがみずから証明していますね。
0060Kusakabe YouichiNGNG
In article >>58, 仕様書無しさん/sage/58 wrote:

> ごめん、このスレを荒す気はありません。
> K&Rを一度は理解するまで熟読することをお勧めします。>all

できれば原書をね。
0061デフォルトの名無しさんNGNG
> あさにあなたがみずから証明していますね。
こっちはもう夕方ですね。
0062Kusakabe YouichiNGNG
In article >>61, デフォルトの名無しさん/sage/61 wrote:
> こっちはもう夕方ですね。

韓国あたりかな?
0063デフォルトの名無しさんNGNG
>>62
韓国人をバカにするな!
0064デフォルトの名無しさん NGNG
なにも、本物が来ないからって、偽者が暴れることないじゃない?
0065デフォルトの名無しさんNGNG
スレとは関係ないけど、多倍長整数って、固定長で実装するべきだということに、今更気付いた...。
#乗算は、多倍長のビットシフトと加算で十分なのでは?
0066デフォルトの名無しさんNGNG
>>65
なんで?
006765NGNG
可変長だと、管理が面倒だからです。
>>8の説明が理解できない俺は逝ってよしですか?
while (bitLength--)
{
if (right & 1)
result += left;
right >>= 1;
left <<= 1;
}
0068デフォルトの名無しさんNGNG
>>65
多倍長乗算はビットシフトと加算でもできますが
超絶遅いものができあがりますよ(^^;

せっかく乗算器があるのですから(ありますよね?)、
使ってあげましょう。
0069デフォルトの名無しさんNGNG
C++ なら LEDA 入れれば一発なんだが.
0070デフォルトの名無しさんNGNG
使う言語間違えてるよ>1
0071デフォルトの名無しさんNGNG
バイト数を示すタグをつけるのが一番現実的
0072デフォルトの名無しさんNGNG
long long long int 使えば256桁まで表現できる。
ただし使える処理系は限られる。
0073デフォルトの名無しさんNGNG
>>72
それ何ピット長なの?
0074デフォルトの名無しさんNGNG
>>3
かわいい。
0075Kusakabe YouichiNGNG
In article >>63, デフォルトの名無しさん/sage/63 wrote:
>>>62
>韓国人をバカにするな!

俺に事実を曲げろというのか?
0076Kusakabe YouichiNGNG
In article >>75, Kusakabe Youichi/75 <[email protected]> wrote:
> In article >>63, デフォルトの名無しさん/sage/63 wrote:
> >韓国人をバカにするな!
>
> 俺に事実を曲げろというのか?

行末がマヌケですね。
0077Kusakabe YouichiNGNG
In article >>76, Kusakabe Youichi/76 <[email protected]> wrote:
>In article >>75, Kusakabe Youichi/75 <[email protected]> wrote:
> > In article >>63, デフォルトの名無しさん/sage/63 wrote:
> > >韓国人をバカにするな!
> >
> > 俺に事実を曲げろというのか?
> 行末がマヌケですね。
行末がマヌケですね。:)
0078Kusakabe YouichiNGNG
>>77
In article >>77, Kusakabe Youichi/77 <[email protected]> wrote:
> In article >>76, Kusakabe Youichi/76 <[email protected]> wrote:
> >In article >>75, Kusakabe Youichi/75 <[email protected]> wrote:
> > > In article >>63, デフォルトの名無しさん/sage/63 wrote:
> > > >韓国人をバカにするな!
> > >
> > > 俺に事実を曲げろというのか?
> > 行末がマヌケですね。
> 行末がマヌケですね。:)

行末もマヌケですね。:)
0079デフォルトの名無しさんNGNG
やめんか
0080お胸おっぱいNGNG
ふつーに筆算でやる時のことを考えれば判りやすいかも。

   A1  A0
×  B1  B0
───────
   C1  C0    … A0×B0+(A1×B0) × 10
D1 D0        … B1×A0+(B1×A1) × 10
───────

各桁が10進1桁でなく、8bit (=256進1桁) だとどうなるか。
0081ななしさんNGNG
age
00821NGNG
もう、いいよ。
アセンブリでレジスタ使ってやることにしたから。
キャリーレジスターの方がいい。
0083デフォルトの名無しさんNGNG
キャリーフラグな
0084MNGNG
n^3+n^2+n≧10の27乗
みたいなnを見つける計算ってC言語でどうやればいいの?
0085デフォルトの名無しさんNGNG
>>84
pow関数
0086デフォルトの名無しさんNGNG
n = 10^(27/3)
とすれば
n^3+n^2+n>10^27
なので後はニュートン法。
くらいしか漏れは思いつかない。
0087MNGNG
pow関数でもできないんです・・・。扱う値が大きすぎて。。
0088 NGNG
┌─────────────┐
|  もえちゃんを救うため    │
| 皆様に協力をお願いします。        \  オナガイシマース!!  /
|
   ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\  ∧_∧  ∧_∧ ∧_∧
  ( ´∀`)< 心臓移植手術のための善意の| (´∀` ) (´∀` )(´∀` )
  (つ\ 丶 \ 募金をお願いしまーす。    |(    ) (    )(    )
  | |[三]  \___________/  | | | | | |. | | |
  (__)_)                       (_(__)(_(__)(_(__)

http://www2.gateway.ne.jp/~moe-moe/
■ このスレッドは過去ログ倉庫に格納されています