C语言偶数拆分

题目(Description):
输入一个大于等于6的正偶数,将其拆分成两个素数(质数)的和,比如12=5+7, 20=3+17。
素数(质数):除了1和本身外没有其他因子的数,比如2、3、5、7、11、13 … 一般规定1不是素数。
要求:编写一个求素数的函数。
输入(Input ):
一个大于等于6的正偶数
输出(Output):
(1)如果输入的是奇数或小于6的偶数,则输出"Input an even num (>=6)"(首字母大写,单词间一个空格,括号内无空格,没有句号".")
(2)如果是合法输入(一个大于等于6的正偶数),则输出两个素数且满足它们的和是输入的偶数
要求:小素数在前,大素数在后;且是所有可能拆分中,有最小素数的那一组。
比如:20=3+17 且 20=7+13,则输出3+17(中间没有空格),因为这一组有满足条件的最小素数
提示(Hint):
分别编写 prime 和 main 函数,用 prime 函数实现素数判断。
int prime(int y)
{
        如果y是素数则返回1
        否则返回0
}
示例1(Sample):
输入(Input):
20
输出(Output):
3+17
示例2(Sample):
输入(Input):
33
输出(Output):
Input an even num (>=6)

#include <stdio.h>
#include <math.h>
int IsPrime(int n)
{
	 int i;
	 if (n <= 1)
 		 return 0;
	 for (i = 2; i <= (int)sqrt(n); i++)
 		 if (n % i == 0 && n != 2)
 		  return 0;
	 return 1;
}
int main()
{
 	int n,i;
	 scanf("%d", &n);
	 if (n % 2 != 0 || n < 6)
		  printf("Input an even num (>=6)");
	 else {
		  for (i = 1; i <= n; i++)
			   if (IsPrime(i) && IsPrime(n - i))
 				   break;
			  printf("%d+%d", i, n - i);
	      }
	 return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43530041/article/details/85118790