如何使用字符串数组来分解数字的各个数字?

Posted

技术标签:

【中文标题】如何使用字符串数组来分解数字的各个数字?【英文标题】:How to use a string array to breakdown the individual digits of a number? 【发布时间】:2017-11-22 05:06:02 【问题描述】:

我必须编写一个代码,它接受输入并打印出一个由原始数字中存在的素数组成的新数字。 前任。输入: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;

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

【问题讨论】:

FWIW,您需要将每个数字的 flag 重置为 0。否则,一旦设置为1,它的值就不会改变。 【参考方案1】:

如果我理解您要正确执行的操作(有效地从您的输入数字中删除 2、3、5 和 7 以外的数字),那么这应该可以:

#include <algorithm>
#include <iostream>
#include <set>
#include <string>

using namespace std;

int main() 
    const set<int> primes2, 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';

对有效数字输入没有错误检查,但如果您需要,可以轻松添加。 Live version.

【讨论】:

以上是关于如何使用字符串数组来分解数字的各个数字?的主要内容,如果未能解决你的问题,请参考以下文章

c语言一个数分解成独立的数字

如何在 immutable.js 中定义字符串和数字数组或元组

如何将数组中的数字字符串转换为数字?

TS:整数、字符串、数组之间的转换

求指教!,php如何把字符串转化为字节数组呢?

java中怎么将由数字组成的字符串转化为数组?