Any even number greater than 2 can be represented by the sum of two prime numbers, program to find out which prime numbers can be represented by even number n

#include "stdio.h"

void IsPrime(int* p,int n)
{
    
    

	for (int i = 0; i < n; i++) //初始化数组为0
		p[i] = 0;
	for (int i = 2; i < n; i++)  //厄拉多塞筛选法找出素数
	{
    
    
		if (p[i] == 0) {
    
    
			for (int j = i + i; j < n; j += i)
				p[j] = 1;
		}
	}
}

void PrimeAnd(int * p,int n)
{
    
    
	for (int i = 2; i <= n / 2; i++)
	{
    
    
		if (p[i] == 0&&p[n-i]==0)
		{
    
    
			printf("%d+%d=%d\n",i,n-i,n);
		}
	}
}

int main()
{
    
    	
	int n;
	printf("请输入一个偶数:\n");
	scanf("%d", &n);
	int* p = (int*)malloc(n * sizeof(int));
	IsPrime(p,n);
	PrimeAnd(p, n);
	return 0;
}

Guess you like

Origin blog.csdn.net/Genius_bin/article/details/112252139