【C语言】验证哥德巴赫猜想:任何一个大于2的偶数均可表示成为两个素数之和。
例如:4=2+2,6=3+3,8=3+5…
要求:将6-100之间的偶数都表示为两个素数之和,输出时一行5组。若有多组结果满足条件,则输出第一个被加素数最小的情况,例如14=3+11,14=7+7,输出前一种情况。
方法一
#include <stdio.h>
#include<math.h>
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<stdio.h>
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;
}
版权声明:本文为xiamuandsansan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。