首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 質數判斷程式修正:語法錯誤與邏輯優化

     編輯:程式設計綜合問答

原始錯誤程式碼

int main(){
    int n; 
    Cout<<"input number"<>n; // 錯誤:Cout 大寫、<> 方向反、缺分號
    For (int i=2;i<=sqrt(n);i++) { // For 大寫
        if((n%i)==0) break;
        else cout<<n<<"bushi sushu"<<endl; // 邏輯錯:每次循環都輸出
    }
    Rerurn 0; // 拼寫錯
}

修正版 (標準 C++)

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int n;
    cout << "input number: ";
    if (!(cin >> n)) return 1; // 輸入驗證
    if (n < 2) { cout << n << " 不是質數\n"; return 0; }

    bool isPrime = true;
    for (int i = 2; i * i <= n; ++i) { // i*i 避免 sqrt 浮點誤差
        if (n % i == 0) {
            isPrime = false;
            break;
        }
    }
    cout << n << (isPrime ? " 是質數" : " 不是質數") << endl;
    return 0;
}

關鍵修正點

錯誤修正
Coutcout (小寫)
<>n>> n (輸入流運算子)
Forfor (小寫)
邏輯:else 輸出用旗標 isPrime 循環後統一輸出
Rerurnreturn
sqrt(n) 每次計算i * i <= n 整數運算更快

進階優化:試除法優化

if (n % 2 == 0) return n == 2;
for (int i = 3; i * i <= n; i += 2) // 只檢查奇數
    if (n % i == 0) return false;

編譯執行

g++ prime.cpp -o prime
./prime
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved