如何以五個數字的行顯示輸出?

諾爾貢

我是編程新手,我必須以五行的形式顯示作為此代碼乘積的所有質數。經過太多小時的嘗試在網上找到一些東西後,這就是我想出的。這樣,即使是素數也不會顯示在最後;一路只有1s。我很高興知道我做錯了什麼或者我可以改變什麼。

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

int main() {
    int n { 0 };
    cout << "Please enter an initial value n<2000 in order for the calculation to begin: " << endl;
    cin >> n;

    vector<bool> cygnus(n + 1);               
    for (int m = 0; m <= n; m++) {
        cygnus[m]=true;
    }

    for (int j = 2; j < n; j++) {
        if (cygnus[j] == true) {
            for (int i = j + 1; i <= n; i++) {
                if (i % j == 0) {
                    cygnus[i] = false;
                }
            }
        }
    }
    
    int s = 0;
    for (auto value : cygnus) {
        if (value == true && s > 0) {
            for (int counter = s; counter++; ) {
                if (counter % 5 == 0) {
                    cout << setw(3) << s << "  \n ";
                }
                
                if (counter % 5 != 0) {
                    cout << setw(3) << s << "  ";
                }
            }
        }

        s++;
    }

    cout << endl;
    return 0;
}
阿德里安鼴鼠

您的輸出邏輯嚴重過度複雜。只需在執行輸出counterfor循環外聲明一個變量(並初始化為零),然後每次打印數字時,將其遞增。當它達到值 5 時,打印一個換行符並將其重置為零。

其他幾點:

  1. STL容器(如std::vector)使用size_t類型(不int為它們的大小和索引)。在下面的代碼中,我已將所有int變量更改為這種類型;幸運的是,這不會影響您的算法。

  2. 請注意,1 不是質數

這是您的代碼的重新設計版本:

#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;

int main()
{
    size_t n{ 0 };
    cout << "Please enter an initial value n<2000 in order for the calculation to begin: " << endl;
    cin >> n;

    vector<bool>cygnus(n + 1);
    for (size_t m = 0; m <= n; m++) {
        cygnus[m] = true;
    }

    for (size_t j = 2; j < n; j++) {
        if (cygnus[j] == true) {
            for (size_t i = j + 1; i <= n; i++) {
                if (i % j == 0) {
                    cygnus[i] = false;
                }
            }
        }
    }
    size_t s = 0;
    size_t counter = 0;
    for (auto value : cygnus) {
        if (value == true && s > 1) { // Note that 1 is NOT a prime number
            cout << setw(3) << s << "  ";
            if (++counter == 5) {
                cout << "\n ";
                counter = 0;
            }
        }
        s++;
    }
    if (counter != 0) cout << "\n "; // Add newline for any partial last line.
    cout << endl;
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何顯示輸入數字的單個數字?

如何僅顯示每個塊中第一行的少數指定列,即格式化 ifconfig 輸出?

如何使數字出現在 Javscript 的顯示屏幕中?

如何清除在計算器中輸入的顯示屏上的第一個數字,以便第二個數字不會連接到第一個數字?

如何使用遞歸輸出這個數字

以升序顯示兩個整數輸入之間的所有數字的 C 程序

循環功能讓用戶決定在輸入字段中顯示多少個數字

如果數字長於 5 位,則確定數字是奇數還是偶數的程序會顯示錯誤的輸出

Powershell - 如何讓我的 PSCustomObject 顯示兩個輸出

如果輸入單個數字,如何修改我的程序以返回相同的輸出?

當用戶在輸入字段中輸入以逗號分隔的值時。如何以列表格式顯示輸出

如何在同一個輸出中一起顯示多個圖 -python

如何在運行時在 powershell 腳本中顯示 xcopy 的輸出

輸出數組只顯示最後一個元素,而不是在數組中的指定位置插入數據

如何格式化顯示以進行數字對齊

如何在 console.log 中顯示輸出?

如何讓 JavaScript 輸出顯示跨度樣式?

顯示某個數字範圍內的最大數字組合

為什麼我的輸出結果在 Python 中應該以相反的順序顯示確切數字時不顯示 0。沒有將參數變量更改為字符串

從數據庫中計數並顯示輸出

Get-MailboxFolderStatistics 輸出文件僅顯示數字

Python - 將用戶輸入附加到同一個列表的兩個類,如何在循環中顯示其數據

Python Flask 顯示舊輸出

輸出顯示為 null (Ruby)

在 javaScript 中使用查找數組幫助器顯示未定義的輸出

如何在 AG Grid 中輸入 5M 或 10k,以便顯示完整數字(即 5,000,000 或 10,000)

閃亮:輸出將顯示在每個菜單項中

如果分組數據框的列中有兩個元素,如何突出顯示行

以 2 位數字顯示計時器而不是一個 react-timer-hook