カルスペの日記

気の向くままに色々なことを書きます

記-2

「2018って半素数じゃね?」とふと思ってしまい、今年最初のプログラムとして半素数を羅列させるプログラムを書くことにした。

一応、半素数の定義を↓

In mathematics, a semiprime (also called biprime or 2-almost prime, or pq number) is a natural number that is the product of two (not necessarily distinct) prime numbers.

(Wikipediaより引用< https://en.wikipedia.org/wiki/Semiprime >)


そして書いたプログラムは以下の通り

「semiprime.c」

#include <stdio.h>
#include <math.h>
#define N 50

int prime_judge(int n)
{
	if(n==1) return 0;
	if(n==2||n==3) return 1;

	int i;

	for(i=2;i<=sqrt(n);i++)
	{
		if(n%i==0) return 0;
	}
	return 1;
}

int semiprime_judge(int n)
{
	if(n==1||prime_judge(n)==1) return 0;

	int i;

	for(i=2;i<sqrt(n);i++)
	{
		if(n%i==0)
		{
			if(prime_judge(n/i)==1){
				return 1;
			}else{
				return 0;
			}
		}
	}
}

int main(void)
{
	int n=1;
	int count=1;

	while(count<=N)
	{
		if(semiprime_judge(n)==1)
		{
			printf("[%d]:%d\n",count,n);
			count++;
		}
		n++;
	}

	return 0;
}

実行結果

[1]:4
[2]:6
[3]:9
[4]:10
[5]:14
[6]:15
[7]:21
[8]:22
[9]:25
[10]:26
[11]:33
[12]:34
[13]:35
[14]:38
[15]:39
[16]:46
[17]:49
[18]:51
[19]:55
[20]:57
[21]:58
[22]:62
[23]:65
[24]:69
[25]:74
[26]:77
[27]:82
[28]:85
[29]:86
[30]:87
[31]:91
[32]:93
[33]:94
[34]:95
[35]:106
[36]:111
[37]:115
[38]:118
[39]:119
[40]:121
[41]:122
[42]:123
[43]:129
[44]:133
[45]:134
[46]:141
[47]:142
[48]:143
[49]:145
[50]:146

単純にプログラムを書きたかっただけで他に書くこともないのでこれにて



最後に

来年(2019年)、2019も半素数ですね。