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 #include 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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |