比较简单的做法
2024-06-19 15:19:42
发布于:湖北
9阅读
0回复
0点赞
解题思路:
用一个数组存储1到10000的所有数字是不是质数,如果是就存储为1,不是就存为0
这样后面就不用重复判断某个数字是不是质数了
然后就循环遍历4~N
具体到某个数字i时:
j从2开始判断,判断j和i-j是不是质数,如果是就输出,否则就不输出
#include <bits/stdc++.h>
using namespace std;
int nums[10010];
int is_prime(int n){
if(n<2)return 0;
else
{
for(int j=2;j<n;j++)
{
if(n%j==0)return 0;
}
return 1;
}
}
int main()
{
/*
解题思路:
因为要测试点数字很多4~N个
所以解题思路就用桶排序的思路,是质数就变为1
到时候就判断这些数字在不在列
*/
for(int i=1;i<=10000;i++)
nums[i] = is_prime(i);
int n;
cin>>n;
for(int i=4;i<=n;i+=2)
{
for(int j=2;j<=i/2;j++)
{
if( nums[j]==1 and nums[i-j]==1 )
{
printf("%d=%d+%d\n",i,j,i-j);
break;
}
}
}
return 0;
}
这里空空如也
有帮助,赞一个