素数を判定しよう。
まず素数とは。
1は素数ではないの?
素数は正の約数が1と自分自身のみということですが、その約数とは
"2" であれば"1"と"2"、"3"であれば"1"と"3"のみ約数があるのでこの2つの数字は素数。"4"では"1"と"2"と"4"が約数となるので3つの約数を持つので素数ではありません。
素数であるかないかは1と自分以外の約数を持たない、もし他の約数がある場合は素数ではないということになります。
素数判定ですが、2は素数ですが偶数は素数ではないので
Swift
var isPrime = 8
if isPrime == 2{
print("素数です")
}else if isPrime%2 == 0{
print("素数ではありません")
}else{
print("素数の可能性があります")
}
Python
isPrime =8
if isPrime == 2:
print("素数")
elif isPrime%2 == 0:
print("素数ではない")
else:
print("素数の可能性がある")
"8"を判定してみれば素数ではないと出ます。
奇数であっても素数とは限らないのでその判定も追加します。
素数を判定する数字を2から順番に割っていき割れたら終了するようにしています。
Swift
var isPrime = 11
var prime = false
if isPrime == 2{
print("素数です")
}else{
for i in 2..<isPrime{
if isPrime%i==0{
prime = false
break
}else{
prime = true
}
}
}
print(prime)
出力は素数であれば"true"となります。
Python
isPrime = 17
prime = False
if isPrime == 2:
print("素数です")
else:
for i in range(2,isPrime):
if isPrime%i==0:
prime = False
break
else:
prime = True
print(prime)
出力は素数であれば"True"となります。
C言語
#include <stdio.h>
#include <stdbool.h>
void subfunc(void);
int main() {
int isPrime = 5;
bool prime = false;
int i;
if (isPrime == 2){
printf("素数");
}else{
for (i = 2; i < isPrime; i++) {
if (isPrime%i==0){
prime = false;
break;
}else{
prime = true;
}
}
}
printf("%d\n",prime);
}
C言語ではtrue,falseを使う場合は
をインクルードする必要があります。
真偽値のデータ型は"bool"とします。for文の変数"i"についても宣言しておく必要があります。
実行するとtrueであれば"1"、falseであれば"0"と出力されます。
参考になるサイト
この記事が気に入ったらサポートをしてみませんか?