[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
70(1): 名前は開発中のものです。 [sage] 04/06/16 01:41 ID:qW9lKpJw(1) AAS
>>6868(2): 生徒A [sage] 04/06/16 00:25 ID:aSS5sxrF(1) AAS
とりあえず、エラトステネスのふるいを使わないで考えたプログラムです
/*1より大きい整数のうち,1と自分自身以外の整数では
割り切れないような整数を素数というらしい*/
#include<stdio.h>
int main(void)
{
/*小さい方から1000個の素数を見つけるプログラム*/
int count=0,chknum;
int i,j;
/*素数かどうかを判断するには、2からその数値のすぐ下まで全て割り切れないかどうかを判断する*/
for(j=0;count<1000;j++){
chknum=j;
for(i=2;i<=chknum;i++){
if(i==chknum){/* この条件が当てはまれば素数になる */
count++;/*カウンタをインクリメント*/
printf(" %d(%d個目発見!)",chknum,count);
}
else if(chknum%i == 0){ /* i!=chknum の状態で 割り切れるなら */
/*この条件が成り立つ時は、素数じゃないので*/
break;/*内側のループのみ脱出する*/
}
}
}
return (0);
}
間違ってる希ガス。
1000までの数の中の素数を上げるんじゃないですよん。
変数chknumが必要かもう一度考え直してみなはれ。(こっちのが見やすいかもしんないけど)
71: 4 ◆3VUXqvbfSY [] 04/06/16 08:42 ID:XOSz7qTz(1/2) AAS
模範解答は用意しましたよ。
でも、発表は答えが出そろってからにします。
72: 名前は開発中のものです。 [sage] 04/06/16 09:07 ID:E0t6wJPT(2/3) AAS
>>70
最初、オレもそう思ったけど、
問題には、小さい方から1000個って書いてある悪感。
for(j=0;count<1000;j++){
これが紛らわしい。
73: 名前は開発中のものです。 [] 04/06/16 14:41 ID:Zcc4AjKX(1) AAS
∩
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!今から参加していいですか?
/ / \_______________
/ /| /
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
数当てゲーム
外部リンク[zip]:gamdev.org
74: 生徒(C++) [sage] 04/06/16 15:06 ID:KVxQtTo1(1) AAS
先生、標準講座C++という本を読み終わった程度ですが参加してみます。
でもアルゴリズムは全然知らないので、総当りです。
#include<iostream>
#include<list>
using namespace std;
int main()
{//総当りで素数を探す
list<int> prime;//素数
int num=2;//走査する値
while(1)
{
for(list<int>::iterator itr=prime.begin();itr!=prime.end();itr++)
if(num%(*itr)==0)break;//素数以外はループを抜ける
if(itr==prime.end())prime.push_back(num);//素数は保存
if(prime.size()==1000)break;//1000個目で終了
num++;//値を1増やす
}
cout<<"1000個目の素数:"<<(*prime.rbegin())<<endl;
return 0;
}
75: 4 [] 04/06/16 15:59 ID:XOSz7qTz(2/2) AAS
参加は嬉しい限りですよね >>1さん
でもむしろ…先生役やりたい人誰か居ない?
激しく募集中です…
76: 名前は開発中のものです。 [sage] 04/06/16 18:33 ID:Ls5cfn3b(1) AAS
<html><body><script>
function s(n){
for (i=2;i<=n/2;i++)if(n%i==0)return false;
return true;
}
o="2,3,";c=0;
for(j=4;;j++){
if (s(j)){c++;o+=j+',';}
if (c>999)break;
}
document.write(o);
</script></body></html>
77(2): 63 ◆xdaKt6k1XI [sage] 04/06/16 20:42 ID:KZI0wz/S(1) AAS
挫折しますた・・・orz
78(1): 名前は開発中のものです。 [sage] 04/06/16 22:21 ID:uyNGxE8j(1) AAS
>>77
外部リンク[html]:www.ese.yamanashi.ac.jp
79(1): 名前は開発中のものです。 [sage] 04/06/16 23:54 ID:E0t6wJPT(3/3) AAS
>>77
どこでどう挫折したのか書いてみましょうよ。
80: 名前は開発中のものです。 [sage] 04/06/17 00:05 ID:AAkEHKib(1/2) AAS
よし、俺も素数のと数当てやってみる
81: 名前は開発中のものです。 [sage] 04/06/17 00:44 ID:AAkEHKib(2/2) AAS
#include <stdio.h>
#include <math.h>
int IsPrime(int);
int main()
{
int i, n = 1;
printf(" 2 ");
for(i = 0; i < 999; i++){
for(n+=2; IsPrime(n) == 0; n+=2);
printf("%4d ", n);
}
return 0;
}
int IsPrime(int n)
{
int i;
if(n % 2 == 0 && n != 2) return 0;
for(i = 3; i <= sqrt(n); i += 2)
if(n % i == 0) return 0;
return 1;
}
2を出すべきか出さざるべきか小一時間悩んだ…
82: 63 ◆xdaKt6k1XI [sage] 04/06/17 07:40 ID:wIlIrMhO(1) AAS
>>78
結構難しそうっすね。
>>79
2から自分自身のまで順番に割ってって計算結果が1以外だったら自分自身の数を1足してやりなおして、計算結果が1だけだったらその数を表示するってようにしたんですが。
83(1): 名前は開発中のものです。 [sage] 04/06/17 10:39 ID:qLkBm+a6(1) AAS
その考え方で問題ないか確認してみる。...のあとの数字は余り。
5/1 = 5 ... 0
5/2 = 2 ... 1
5/3 = 1 ... 2
5/4 = 1 ... 1
5/5 = 1 ... 0
6/1 = 6 ... 0
6/2 = 3 ... 0
6/3 = 2 ... 0
6/4 = 1 ... 2
6/5 = 1 ... 1
6/6 = 1 ... 0
84: 63 ◆xdaKt6k1XI [sage] 04/06/18 15:04 ID:uMGX0XjB(1) AAS
>>83
駄目でしたか・・・・もう一度がんばります!
85(2): 名前は開発中のものです。 [sage] 04/06/19 14:57 ID:W8craWnM(1/2) AAS
#include <stdio.h>
void main()
{
unsigned long cun;
int a,i;
printf("2\n");
for(i=3;i<=1000;i+=2){
for(a=3;a<i;a+=2){
cun++;
if(i%a==0)
break;
}
if(i==a)
printf("%d\n");
}
}
暇なんで参加
86(1): 85 [sage] 04/06/19 14:58 ID:W8craWnM(2/2) AAS
unsigned long cun; とcun++;
は無視で <(_ _)>
87: 名前は開発中のものです。 [sage] 04/06/19 17:01 ID:olZSV2kJ(1) AAS
>>85-86
Upするまえにテストしよ〜よ。
それから、問題文をちゃんと読むべし。
88: 生徒A [sage] 04/06/19 19:27 ID:GZf8LDr8(1) AAS
そういえば、新しい課題って無いの?
89(1): 名前は開発中のものです。 [sage] 04/06/19 20:08 ID:hqj9xu9C(1) AAS
素数とかはロジックを考えるのは大切だけど、できてもあまり嬉しくないからなぁ。
かといって特定の分野に特化すると、それぞれの分野には初心者スレがあるし。
「適当なウィンドウを作成してsin波形を描画する」あたりはどう?
90(1): 4 ◆3VUXqvbfSY [] 04/06/19 21:47 ID:wn6hjF1m(1/3) AAS
良いねその課題!…ってチョットレベル上がり杉な…
…まあ良いか…
でもまずは、640*480のウィンドウに
(0,0)320*240の赤い四角を描いてください。
91: 4 ◆3VUXqvbfSY [] 04/06/19 22:17 ID:wn6hjF1m(2/3) AAS
前課題解答例
#include <stdio.h>
int Check_Prime(long n)//素数判定
{
long loops;
loops=1;
while(loops*loops < n)
{
if(loops>2)loops+=2;
else loops++;
if(n%loops==0)return 1;
}
return 0;
}
void main(void)
{
long loops=2,m=1;
printf("%ld %ld\n",m,loops);
while(m<2000)
{
m++;
printf("%ld %ld\n",m,loops);
}
if(loops>2)loops+=2;
else loops++;
}
92(1): 63 ◆xdaKt6k1XI [sage] 04/06/19 22:23 ID:D2QJG2Dd(1/2) AAS
素数は無理でしたが・・・
>>90の課題はできました。
WIDTH 640,480
COLOR 255
BOXF 320,240,1,0
stop
93: 63 ◆xdaKt6k1XI [sage] 04/06/19 22:24 ID:D2QJG2Dd(2/2) AAS
>>92
BOXF 320,240,1,0
は
BOXF 320,240,0,0
です。
94: 4 [] 04/06/19 22:25 ID:wn6hjF1m(3/3) AAS
ミスった(汗。訂正
void main(void)
{
long loops=2,m=1;
printf("%ld %ld\n",m,loops);
while(loops<2000)
{
if(Check_Prime(loops)==0)
{
m++;
printf("%ld %ld\n",m,loops);
}
if(loops>2)loops+=2;
else loops++;
}
}
上下前次1-新書関写板覧索設栞歴
あと 693 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s