C++笔记-PTA 验证“哥德巴赫猜想”

    科技2025-06-17  8

    文章目录

    一、题目二、算法思路三、代码

    一、题目

    二、算法思路

    可以先设计一个函数用于判断是否为素数,在素数判断的时候可以不用从2遍历到n-1,只需要遍历到根号n即可,2和3小素数还有偶数可以提前进行判断。

    题目要求的是求两个数p和q,使得p + q = n,而且有多个解时要求输出p最小的情况。 所以我们可以对p的值从2到n-1进行遍历,不需要再写一个循环对q的值进行遍历,要是写成双循环的话没法过最大N的样例。 q的值可以用表达式来表示n - p,如果p和q同时都为素数时,就直接输出结果并结束程序。

    三、代码

    //作者:小狐狸 #include<iostream> #include<cmath> using namespace std; int sushu(int number){//素数判断,素数返回1,否则返回0 if(number==2||number==3)//小素数 return 1; if(number%2==0)//偶数判断 return 0; for(int i=3;i<=sqrt(number);i++){ if(number%i==0) return 0; } return 1; } int main(){ int n; int p; cin>>n; for(p=2;p<n;p++) { if(sushu(i)&&sushu(n-i))//p和q同为素数时 { cout<<n<<" = "<<p<" + "<<n-p<<endl; return 0; } } return 0; }
    Processed: 0.009, SQL: 8