如何使用字符串数组来分解数字的各个数字?
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.
【讨论】:
以上是关于如何使用字符串数组来分解数字的各个数字?的主要内容,如果未能解决你的问题,请参考以下文章