PTA驗證哥德巴赫猜想
數學領域著名的“哥德巴赫猜想”的大致意思是:任何一個大於2的偶數總能表示為兩個素數之和。比如:24=5+19,其中5和19都是素數。本實驗的任務是設計一個程式,驗證20億以內的偶數都可以分解成兩個素數之和。
輸入格式:
輸入在一行中給出一個(2, 2 000 000 000]範圍內的偶數N。
輸出格式:
在一行中按照格式“N = p + q”輸出N的素數分解,其中p ≤ q均為素數。又因為這樣的分解不唯一(例如24還可以分解為7+17),要求必須輸出所有解中p最小的解。
輸入樣例:
24
輸出樣例:
24 = 5 + 19
思考:
給的數字的範圍(2, 2 000 000 000], 所以,根本不用判斷0, 1 啊
可以不用flag,不是素數直接return 0
看到題, emmm, 很簡單嘛,考察素數。 第一次提交,媽的,哪裡錯了 第二次,哪裡錯了,哪裡錯了??? …
第N次,次奧,是<=n啊!!!!!這個傻逼問題出錯好幾次了!!!!!
程式碼
錯誤的
#include<iostream>
#include<cmath>
using namespace std;
int primer(int n)
{
/*if(n == 1 || n==0) return 0;
if(n == 2) return 1;
int flag = 1;*/可省略
for(int i = 2; i < sqrt(n); i++)//!!!!!!已經犯過這樣的錯誤了
{
if(n % i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int n;
cin >> n;
for(int i = 2; i <= n/2; i++)
{
if(primer(i)&&primer(n-i))
{
cout << n << " = " << i << " + " << n-i;
break;
}
}
}
正確的
#include<iostream>
#include<cmath>
using namespace std;
int primer(int n)
{
for(int i = 2; i < sqrt(n); i++)
{
if(n % i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int n;
cin >> n;
for(int i = 2; i <= n/2; i++)
{
if(primer(i)&&primer(n-i))
{
cout << n << " = " << i << " + " << n-i;
break;
}
}
}
相關文章
- 利用C語言驗證哥德巴赫猜想C語言
- 【PTA】查驗身份證
- Python驗證和視覺化之三大猜想 [ 冰雹猜想、角谷猜想、考拉茲猜想 ]Python視覺化
- 1001 害死人不償命的(3n+1)猜想 PTA
- PTA 實驗3-4 統計字元字元
- 驗證碼原理及驗證
- python如何實現哥德巴赫分解Python
- pta
- JavaScript驗證碼生成和驗證效果JavaScript
- SSL證書是如何驗證的?驗證方式推薦
- easy-captcha實現驗證碼驗證APT
- 驗證碼---js重新整理驗證碼JS
- thinkphp驗證器獲取$data資料,自定義驗證,多條件唯一性驗證unique驗證PHP
- 身份證驗證工具類
- 需求驗證
- 拖拽 驗證
- livewire 驗證
- 關於 block 會不會被自動 copy 的實驗和猜想BloC
- 三人猜想
- 卡拉茲(Callatz)猜想
- PTA出租
- 手機號碼驗證方法(正則驗證)
- Laravel 驗證類 實現 路由場景驗證 和 控制器場景驗證Laravel路由
- 手動驗證 TLS 證書TLS
- PHP 驗證身份證號碼PHP
- C++身份證號驗證C++
- 登入驗證碼生成kaptcha(輸入驗證碼)APT
- ACCESS 密碼驗證/文字驗證中的小坑密碼
- C# 滑動驗證碼|拼圖驗證|SlideCaptchaC#IDEAPT
- 驗證碼機制之驗證碼重複使用
- K重交叉驗證和網格搜尋驗證
- 中信證券:元宇宙的未來猜想和投資機遇(附下載)元宇宙
- 使用表單驗證,建立資料驗證層,Ajax 統一返回驗證錯誤資訊
- PHP驗證碼PHP
- 驗證是否成功
- XML 驗證概述XML
- Hyperf 驗證 traitAI
- js格式驗證JS