【C语言】验证哥德巴赫猜想:任何一个大于2的偶数均可表示成为两个素数之和。

【C语言】验证哥德巴赫猜想:任何一个大于2的偶数均可表示成为两个素数之和。
例如:4=2+2,6=3+3,8=3+5…
要求:将6-100之间的偶数都表示为两个素数之和,输出时一行5组。若有多组结果满足条件,则输出第一个被加素数最小的情况,例如14=3+11,14=7+7,输出前一种情况。

方法一

#include 
#include
int main()
{
     
	int i, k, m, n, flagm, flagn, count;
	count = 0;
	for (i = 3; i <= 50; i++)
	{
     
		m = 1;
		do 
		{
     
			m = m + 1;
			n = 2 * i - m;
			flagm = 1;
			flagn = 1;
			for (k = 2; k <= (int)(sqrt(m)); k++)
			{
     
				if (m%k == 0)
				{
     
					flagm = 0;
					break;
				}
			}
			for (k = 2; k <= (int)(sqrt(n)); k++)
			{
     
				if (n%k == 0)
				{
     
					flagn = 0;
					break;
				}
			}
		} while (flagm*flagn==0);
		count++;
		printf("%4d=%2d+%2d",2*i,m,n);
		if (count % 5 == 0)
			printf("\n");
	}
	printf("\n");
	return 0;
}

方法二

#include
int prime(int);
int main()
{
     
	int i, j,count=0;
	for (i = 6; i <= 100; i = i + 2)
	{
     
		for (j = 2; j < i; j++)
		{
     
			if (prime(j) && prime(i - j))
			{
     
				printf("%4d=%2d+%2d", i, j, i - j);
				count++;
				if (count % 5 == 0)
					printf("\n");
				break;
			}
		}
	}
	return 0;
}
int prime(int n)    //判断n是否为素数
{
     
	int i;
	for (i = 2; i < n; i++)
		if (n%i == 0)return 0;
	return 1;
}

你可能感兴趣的:(c语言,算法,程序设计)