30位数太大了,直接用%自然是行不通的,所以用高精度来做。
#include<bits/stdc++.h>
using namespace std;
char s[35];
int s1[35];
int main()
{
scanf("%s",s);
int n=strlen(s),x;
for(int i=0;i<n;i++)
{
s1[i]=s[i]-'0';
}
bool fg=true;
for(int k=2;k<=9;k++)
{
x=0;
for(int i=0;i<n;i++)
{
x=x*10+s1[i];
x=x%k;
}
if(x==0)
{
printf("%d ",k);
fg=false;
}
}
if(fg)
{
printf("none");
}
return 0;
}