欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

偶数拆分问题

程序员文章站 2023-09-09 19:14:54
问题描述:将任意偶数拆分为两个素数之和。 tip:素数:对于任意整数n,如果除1和n外不能被其他数整除,则称n为一个素数。 解决思路: 一、素数判定:1.对于任意大于1的整数n,用n分别除以2到n-1,如果余数全不为零,则称n为一个素数 2.对于任意大于1的整数n,用n分别除以2到根号n,如果余数全 ......

问题描述:将任意偶数拆分为两个素数之和。

tip:素数:对于任意整数n,如果除1和n外不能被其他数整除,则称n为一个素数。

解决思路:

      一、素数判定:1.对于任意大于1的整数n,用n分别除以2到n-1,如果余数全不为零,则称n为一个素数

             2.对于任意大于1的整数n,用n分别除以2到根号n,如果余数全不为零,则称n为一个素数

      二、设输入的偶数为n,n=a+b 用上述方法判定a、b是否为素数即可。

代码如下:

已在vs2010中编译完成。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
 int a,d,flag=0;
 float b,c;
loop:
 {
  printf("请输入一个偶数:\n");
  scanf("%d",&a);
 }
 if(a%2!=0)
  goto loop;
 for(b=2;b<=a/2;b++)
 {
  for(d=2;d<=sqrt(b);d++)
   if((int)b%d==0)
    break;
  if (d>sqrt(b))
   c=a-b;
  else continue;
  for(d=2;d<=sqrt(c);d++)
   if((int)c%d==0)
    break;
  if (d>sqrt(c))
  {
   printf("%d = %d + %d\n",a,(int)b,(int)c);
   flag=1;
  }
  else continue;
 }
 if((int)flag==0)
  printf("不能拆分\n");
 system("pause");
}