162 :名無しさん@お腹いっぱい。:2010/12/24(金) 11:49:35 ID:???
31 ←素数
331 ←素数
3331 ←素数
33331 ←素数
333331 ←素数
3333331 ←素数
33333331 ←素数
333333331 ←素数じゃない
402 名前:水先案名無い人[sage] 投稿日:2011/09/01(木) 20:21:22.29 ID:pj76G6nB0 [1/3]
>>391それ何で割れるのだろう?
403 名前:水先案名無い人[sage] 投稿日:2011/09/01(木) 20:33:35.87 ID:OBFkhCyo0
>>40217で割れた。
コメント一覧
素数は1かその数自信でしか割れない数
孤独な数だからね
nが素数ではないとき、nの平方根以下の素数のどれかで割り切れる。
しかし333333331の場合はあまり役に立たない(でかすぎて)
1、2、3、5、7、11、13……
つーか6部は基本的に能力が搦め手過ぎて理解不能
まぁ好きだけど
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(int argc, char *argv[])
{
long n = 0;
long i = 2;
int rc = 1;
if( argc < 2 )
{
printf( "usage: %s number\n", argv[0] );
return -1;
}
n = atol( argv[1] );
if( n >= LONG_MAX )
{
printf( "given number is too large\n" );
return 2;
}
else if( i < n && n % i == 0 )
{
rc = 0;
}
else
{
i++;
while( i < n )
{
if( n % i == 0 )
{
rc = 0;
break;
}
i+=2;
}
}
if( !rc )
{
printf( "%ld is divisible by %ld.\n", n, i );
}
else
{
printf( "%ld can't be divisible by any prime number.\n", n );
}
return rc;
}
う
ん
こ
し
て
ね
ろ
慣例に基づき1行=80文字換算でやってみた。
#include<stdio.h>
#include<stdlib.h>
int main(int c,char *v[]){long n=0;long i=2;int r=1;if(c<2){printf("usage: %s n"
"umber\n",v[0]);return -1;}n=atol(v[1]);if(n>=(((unsigned long)-1L)>>1)){puts(
"given number is too large\n");return 2;}else if(i<n&&n%i==0)r=0;else{i++;while
(i<n){if(n%i==0){r=0;break;}i+=2;}}if(!r){printf("%ld is divisible by %ld.\n",n
,i);}else{printf( "%ld can't be divisible by any prime number.\n",n);}return r;}
ただ、元のプログラムのアルゴリズムが単純すぎ。
せめて終了条件を平方根にするとか、もう少し工夫が欲しい。
夜中に何やっているんだろうオレ
誰か馬鹿なワイに教えてクレメンス
へ
そ
か
ん
で
し
ね
331 ←素数
3331 ←素数
33331 ←素数
333331 ←素数
3333331 ←素数
33333331 ←素数
333333331 ←素敵
「100は素数じゃねぇよ」