高逐位相除(含详解)

时间:2022-05-19 17:16:20 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
高逐位相除(含详解)



#include using namespace std; int main() { int i,j,m,n,r,s; cin>>n; int a[n+1]={0};

m=1;//m:表示前i位能否被i整除(1表示能,0表示不能) i=1;//i表示位数,i=1表示前1位,i=5表示前5 a[1]=1;//a[1]的取值是从19 while(a[1]<=9) {

if(m&&ii位可以被i整除时,看第i+1 i++;

s=0;//s表示前i位的数为多少 for(j=1;j<=i;j++) { s=s*10+a[j];//计算前i位的和 s=s%i;//也是算前i位除以i的余数 }

//若将此句写在循环外面,则s会存储一个24位的数,内存不够 if(s!=0)//i位不能被i整除 { m=0; a[i]++;//21不能被前两位整除时,试试22 while(a[i]>9&&i>1)//29不能被前两位整除时,尝试30 { //i>1:a[1]>9时,就说明没有这样的数,只能在第2-n位之间运算 a[i]=0; i--;//i位已经遍历过1-9,换成第i-1位遍历 a[i]++;// } } else { m=1;//i位可以被i整除 } if(m&&i==n) { for(j=1;j<=n;j++) cout<


}

cout<找到一个 a[i]++;//再对下一个进行遍历 } }

return 0;


本文来源:https://www.wddqw.com/doc/521fddb2f66527d3240c844769eae009591ba2ea.html