已知正整数 k 满足 2≤k≤9,现给出长度最大为 30位的十进制非负整数 c,求所有能整除 c 的 k。
输入格式
一个非负整数 c,c 的位数 ≤30。
输出格式
若存在满足 c \% k = 0的 k,从小到大输出所有这样的 k,相邻两个数之间用单个空格隔开;若没有这样的 k,则输出"none"
。
样例输入
30
样例输出
2 3 5 6
1 #include <iostream>
2 #include<cstring>
3 using namespace std;
4
5
6 int main(){
7 char a[32];//存被除数
8 bool flag=false;
9 int t,len;
10 cin>>a;
11 len = strlen(a);
12 for(int i=2;i<=9;i++){
13 t = 0;
14 for(int j =0;j<len;j++){
15 if(a[j]-'0'+t>=i){
16 //加上高一位留下的数,要乘10
17 //够除的情况,取余
18 t=((a[j]-'0'+t)%i)*10;
19 }else{
20 //不够除的情况
21 t=(a[j]-'0')*10;
22 }
23 }
24 if(t==0){
25 cout<<i<<" ";
26 flag=1;
27 }
28 }
29 if(flag==0){
30 cout<<"none"<<endl;
31 }
32 }