修改了一下你的代码:
#include <stdio.h>
#include <math.h>
int isPrime(int n)
{
for (int i = 2; i < sqrt(n); ++i)
if (n % i == 0)
return 0;
return 1;
}
int main()
{
int n;
printf("Please enter a number): ");
scanf("%d", &n);
for (int i = 2; i <= n / 2; ++i)
{
int j = n - i;
if (isPrime(i) && isPrime(j))
{
printf("prime %d + %d = %d\n", i, j, n);
}
}
return 0;
}
// Output
Please enter a number): 100
prime 3 + 97 = 100
prime 11 + 89 = 100
prime 17 + 83 = 100
prime 29 + 71 = 100
prime 41 + 59 = 100
prime 47 + 53 = 100
附注:求赞助积分和C币。加入CSDN将近20年了。最近几年忙小孩没登录。刚才搜索到一本电子书想下载,需要20积分/C币。已经收到8元了,还差12元。赞助多少都可以。多谢。
你的程序时间复杂读为O(n^2),太高。完全可以O(n).
外层循环到 n/2 结束,内层循环去掉,j = n - i; 就可以了。
判断是否是素数,循环到sqrt(n)可以了。