社区讨论

C语言求助,三个超时

P1304哥德巴赫猜想参与者 4已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@lo3hw2wm
此快照首次捕获于
2023/10/24 06:54
2 年前
此快照最后确认于
2023/10/24 06:54
2 年前
查看原帖
C
#include<stdio.h>
#include<math.h>
int zhishu(int a)
{
	int b[10001];
	for(int i=0;i<10001;i++)
	b[i]=1;
	for(int i=2;i<sqrt(10001);i++)
	{
		for(int j=i*i;j<10001;j=j+i)
		{
			if(b[i])b[j]=0;
		}
	}
	if(b[a])return 1;
	else return 0;
}
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=4;i<=n;i=i+2)
	{
		for(int j=2;j<=n/2;j++)
		{
			if(zhishu(j)&&zhishu(i-j))
			{
				printf("%d=%d+%d\n",i,j,i-j);
				break;
			}
		}
	}
}
选用了欧式筛来写质数的函数,结果还是超时了,想知道怎么改进完善代码,万分感谢!

回复

7 条回复,欢迎继续交流。

正在加载回复...