素数判定プログラムを作れという課題が出たんだが
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/10/22(金) 10:09:55その個数を求めるプログラムを作る課題が出たんですが
誰か作り方を教えてくれませんか?
0002デフォルトの名無しさん
2010/10/22(金) 11:08:372の倍数にチェック
3の倍数にチェック
4はチェックついてるからスキップ
以下同様
0003デフォルトの名無しさん
2010/10/22(金) 11:10:34複数配列やビット表現でやる
0004デフォルトの名無しさん
2010/10/22(金) 11:15:43言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0005デフォルトの名無しさん
2010/10/22(金) 12:19:20総当りでやってみた
もっと効率いい方法あるとおもう
0006デフォルトの名無しさん
2010/10/22(金) 12:35:040007デフォルトの名無しさん
2010/10/22(金) 12:53:580008デフォルトの名無しさん
2010/10/22(金) 12:59:16ttp://codepad.org/xpYiASJt
0009デフォルトの名無しさん
2010/10/22(金) 15:43:560010デフォルトの名無しさん
2010/10/22(金) 20:27:420011デフォルトの名無しさん
2010/10/22(金) 21:37:000012デフォルトの名無しさん
2010/10/22(金) 23:47:28ソースにはちゃんと参考元も添えてなww
0013デフォルトの名無しさん
2010/10/23(土) 17:18:47int n = 判定する数;
if(n == 1) {
printf("n is not a prime number.\n");
}
else {
for(i=2; n%i; i++);
if(i == n) {
printf("n is a prime number.\n");
} else {
printf("n is not a prime number.\n");
}
}
0014デフォルトの名無しさん
2010/10/23(土) 17:45:12素数じゃないときにisSosu==0とかもうね
iii=i/2;が甘いなルートiまでやれば十分
0015デフォルトの名無しさん
2010/10/23(土) 18:31:51素数テーブル作る場合はミラーラビン遅いぞ
0016デフォルトの名無しさん
2010/10/23(土) 23:35:23複数比較検討しましたってレポートにしなきゃ
0017デフォルトの名無しさん
2010/10/28(木) 11:42:24RSA暗号以外で
0018デフォルトの名無しさん
2010/10/28(木) 12:02:41For i=2 To N
If Suji(i)=0 Then
j=2
Do While(i*j<N)
Suji(i*j)=1
j=j+1
Loop
Debug.Print "Sosu "; i
End If
Next i
できた
0019デフォルトの名無しさん
2010/10/28(木) 12:04:14For i=2 To N
If Suji(i)=0 Then
j=2
Do While(i*j<=N)
Suji(i*j)=1
j=j+1
Loop
Debug.Print "Sosu "; i
Count=Count+1
End If
Next i
Debug.Print "Sosu no Kazu "; Count
修正した
0020デフォルトの名無しさん
2010/10/28(木) 12:05:42エストラテネス?
オレはずっとエラストテネスと間違えてたぞ。
アリストテレスとかいう奴のせいだが。
0021デフォルトの名無しさん
2010/10/28(木) 12:23:21これ何の言語?
0022デフォルトの名無しさん
2010/10/28(木) 12:36:15それは、素数判定とは言わないんじゃ。
0023デフォルトの名無しさん
2010/10/28(木) 13:26:27たぶんBASIC系の方言だと思うが…なんだろう?
0024デフォルトの名無しさん
2010/10/30(土) 06:28:51implicit none
integer :: i, n = 0
integer, allocatable :: iprm(:)
do while (n < 2)
print *, "整数 n:"; read *, n
end do
allocate(iprm(2:n))
iprm = [(i, i = 2, n, 1)]
do i = 2, int(n**0.5)
if (iprm(i) /= 0) iprm(i**2:n:i) = 0
end do
print "(5I10)", pack(iprm, iprm /= 0)
print *, count([iprm /= 0]), "個"
deallocate(iprm)
end program So
0025デフォルトの名無しさん
2010/10/30(土) 09:48:390026デフォルトの名無しさん
2010/10/30(土) 23:34:14を
Sosu no Kaze
と読んでしまった俺はJPOP脳
0027デフォルトの名無しさん
2010/11/04(木) 15:17:171010 DIM A(N)
1020 FOR I=2 TO N
1030 IF A(I)=0 THEN GOSUB 1060
1040 NEXT I
1050 END
1060 PRINT I
1070 J=2
1080 IF J*I>N THEN RETURN
1090 A(J*I)=1
1100 J=J+1
1110 GOTO 1080
0028デフォルトの名無しさん
2010/11/04(木) 15:19:47素数について
http://hibari.2ch.net/test/read.cgi/tech/1288361024/8
0029デフォルトの名無しさん
2010/11/04(木) 15:25:221000 INPUT N
1010 DIM A(N)
1015 PRINT 2
1020 FOR I=3 TO N STEP 2
1030 IF A(I)=0 THEN GOSUB 1060
1040 NEXT I
1050 END
1060 PRINT I
1070 J=3
1080 IF J*I>N THEN RETURN
1090 A(J*I)=1
1100 J=J+2
1110 GOTO 1080
0030デフォルトの名無しさん
2010/11/04(木) 15:28:10Syntax Error.
0031デフォルトの名無しさん
2010/11/04(木) 15:31:33Ok.
0032デフォルトの名無しさん
2010/11/04(木) 15:33:120033デフォルトの名無しさん
2010/11/04(木) 19:35:37当時は、セーブ中は何故か音を立てないように息を止めてた
雑音が入ると正しくセーブされないと思い込んでたんだと思う
0034デフォルトの名無しさん
2010/11/06(土) 10:57:100035デフォルトの名無しさん
2010/11/06(土) 11:13:110036デフォルトの名無しさん
2010/11/08(月) 09:47:12尤も、未だに某社のコーディング規約ではカラム指定が生きているけど。
0037デフォルトの名無しさん
2011/03/04(金) 17:01:40.43エラトステネスの篩をjavascriptで書いてみた
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9
*/
function makePrime(max){
var numList = [];
var primeNumList = [];
for (var i=2; i<=max; i++){
numList[i-2]=i;
}
primeNumList[0]=numList[0];
for (var k=1;primeNumList[primeNumList.length -1]*primeNumList[primeNumList.length -1]<max;k++){
primeNumList[k-1]=numList[0];
var j=0;
var temp=[];
for (var i in numList){
if (numList[i]%primeNumList[k-1] != 0){
temp[j] = numList[i];
j++;
}
}
numList=temp;
}
return primeNumList.concat(numList);
}
writeln(makePrime(100));
0038デフォルトの名無しさん
2011/03/14(月) 10:41:58.11if(argc < 2){
printf("no param\n");
return;
}
int param;
sscanf(*(argv+1), "%d", ¶m);
int iSqrt = (int)sqrt(param);
for(int i=2; i<=iSqrt; i++){
if(!(param%i)){
printf("%u / %d = 0\n",param, i);
return;
}
}
printf("prime number\n");
}
0039デフォルトの名無しさん
2011/03/14(月) 13:37:33.43IsPrime =: 1&p:
0040デフォルトの名無しさん
2011/03/14(月) 17:08:15.84剰余を使うのが下手くそ。
0041デフォルトの名無しさん
2011/03/16(水) 09:21:43.71普通はイメージ図の方のアルゴリズムで篩う
後は最適化のために、色々と細工する
function makePrime( max ){
var numList = [];
var primeNumList = [];
var i, j, last;
for( i = 2; i <= max; i++ ){
numList[i] = 1;
}
last = Math.floor( Math.sqrt( max ) );
for( i = 2; i <= last; i++ ) {
if( numList[i] ) {
for( j = i * i; j <= max; j += i ) {
numList[j] = 0;
}
}
}
for( i = 2; i <= max; i++ ) {
if( numList[i] ) {
primeNumList[primeNumList.length] = i;
}
}
return primeNumList;
}
0042デフォルトの名無しさん
2011/03/17(木) 16:38:53.30数学に疎い俺が受け売りで答えてみる。
純粋数学は現実社会においての実用性という意味では
あまり役に立たない。
ただし、応用数学を使う分野は金融工学、材料工学、統計力学などと幅広い。
だから、数論自体に実用性が無くても、数論研究での成果が社会に
生かされることはある。
実用性はさておき、研究なんて好きじゃないとやってらんないんだろうけど。
0043デフォルトの名無しさん
2011/03/23(水) 10:00:22.15YES → 【素数だった?】 ─ YES → じゃあ聞くな死ね
/ \
【素数か判定した?】 NO → なら、素数じゃねぇよ
\
NO → 死ね
0044福盛俊明
2011/03/23(水) 23:51:00.370045デフォルトの名無しさん
2011/03/24(木) 11:21:30.872とか3とか17とか無かったら困るじゃないか
0046デフォルトの名無しさん
2011/03/24(木) 13:06:59.47プログラム板ってレベル低いんだな
0047デフォルトの名無しさん
2011/03/24(木) 15:37:23.15#include <stdio.h>
void sosu(int loop){
int kosu=0;
int yatu=1;
int c;
int i;
int p=0;
for(i = 2; i < loop+1; i++){
for(c = 1; c < i; c++){
if(i%c==0){
p++;
}
}
if(p==1){
printf("%d\n",i);
kosu++;
}
p=0;
}
printf("\n%d個",kosu);
}
int main(){
sosu(250); //仮に250としている。
}
0048デフォルトの名無しさん
2011/03/24(木) 17:14:41.08#include <stdio.h>
int *primes; int size = SIZE_STEP;
int nth_prime(int n){
if(n >= size){
size = SIZE_STEP*(n/SIZE_STEP+1);
primes = realloc(primes,size);
}
if(primes[n] == 0){
int p = nth_prime(n-1);
do{p+=2}while(!is_prime(p));
primes[n]=p;
}
return primes[n];
}
int is_prime(int q){
int n = 0; int p;
for(p = nth_prime(n);p*p <= q;p=nth_prime(++n))
if(q%p == 0) return 0;
return 1;
}
int main(){
int count=0; int k;int n = 250;//入力n = 250と仮定
primes = malloc(size);
primes[0]=2; primes[1]=3;
for(k=2;k<=n;k++)
if(is_prime(k))count++,printf("%d\n",k);
printf("number of primes %d\n",count);
}
0049デフォルトの名無しさん
2011/03/24(木) 19:23:29.18malloc,realloc の引数にsizeof(int)を掛けて、ゼロクリアしなきゃいかんね
0050デフォルトの名無しさん
2011/03/24(木) 19:31:37.41そこから突っ込むのか?
しかも微妙な言い回しで…
突っ込みどころだらけで、何を突っ込めば良いか分からんが
取りあえず最初は、free()しろってところからじゃないのか?
0051デフォルトの名無しさん
2011/03/26(土) 10:37:37.650052デフォルトの名無しさん
2011/03/27(日) 16:21:32.05…とは言ってもググったら良い例が沢山出てきたから今更書くまでもないとは思うが
■ このスレッドは過去ログ倉庫に格納されています