#include "stdafx.h" #include "stdio.h" #include "iostream" typedef unsigned int uint; int a[32]; int k = 2; void f(uint i, int j) //递归产生的 i 的所有约数 存放在 数组a 中 { if( i == 1) return ; if(i%k == 0) { a[j] = k; f(i/k, j+1); return ; } else { k++; } f(i,j); } int prt() // 打印数组a中的内容,并且返回数组元素非零的个数 { int i; i = 0; while(a[i] != 0) { printf("%d/t",a[i]); i++; } return i; printf("/n"); } //555555的约数中最大的三位数是多少。 int main() { int i; int k; int kk; f(555555,0); i = prt(); for(k = 999; k >= 100; k--) //从999 开始试 { int x,y; int s = k; for(x = 0; x < i; x++) { if( s%a[x] == 0) { s /= a[x]; } } if( s == 1) { printf("/n/n/n%d/n",k); break; } } }