如何使用字符串数组来分解一个数字的单个数字

How to use a string array to breakdown the individual digits of a number?

本文关键字:数字 一个 单个 字符串 何使用 数组 分解      更新时间:2023-10-16

我必须编写一个代码,该代码获取输入并打印出由原始数字中存在的素数组成的新数字。前任。输入:453输出:53我已经编写了代码:

#include <iostream>
#include<string>
using namespace std;
int main()
{
    int number;
    int digit;
    int reverse = 0;
    int reverse1;
    int digit1;
    cout<<"input a number"<<endl;
    cin>>number;
    int flag = 0;
    while(number!=0)
    {
        digit = number % 10;
        number = number / 10;
        for(int i = 2; i < digit; i++)
        {
            if(digit % i == 0)
            {
                flag = 1;
            }
        }
        if(flag == 0)
        {
            reverse = reverse * 10 + digit;
        }
    }
    reverse1 = reverse;
    while(reverse1 != 0)
    {
        digit1 = reverse1 % 10;
        reverse1 = reverse1 / 10;
        cout<<digit1;
    }
    cout<<endl;
}

是生成相同输出但代码较短的更好方法。我刚刚开始学习编程,所以请提供易于理解的解决方案:)

如果我了解您要正确执行的操作(从输入号码中有效删除2、3、5&7以外的其他数字),那么这应该有效:

#include <algorithm>
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
    const set<int> primes{2, 3, 5, 7};
    string num;
    cin >> num;
    num.erase(remove_if(begin(num), end(num), [&](char c){ return !primes.count(c - '0'); }), end(num));
    cout << num << 'n';
}

没有错误检查有效的数字输入,但是如果您需要的话,这很容易添加。实时版本。

相关文章: