本文共 1526 字,大约阅读时间需要 5 分钟。
有多组数据,输入数据的第一行为一个正整数,表示字符序列的数目,每组数据为一行字符序列。
对每个字符序列,取出所得整数的最大因子,若字符序列中没有数字或者找出的整数为0,则输出0,每个整数占一行输出。
3 sdf0ejg3.f?9f ?4afd0s&2d79*(g abcde
13 857 0
*** 提示已隐藏,点击上方 [+] 可显示 ***
/********************************* * 日期:2013-3-10 * 作者:SJF0115 * 题号: 天勤OJ 题目1217: Problem C * 来源:http://acmclub.com/problem.php?id=1217 * 结果:AC * 来源:2009年西电计算机研究生复试上机题 * 总结: **********************************/#include#include #include //最大因子unsigned int Factor(unsigned int n){ int Max = 0; for(unsigned int i = 2;i * i <= n;i++){ if(n % i == 0){ //当前因子 Max = i; } //除以当前因子 while(n % i == 0){ n = n / i; } } if(n > Max){ Max = n; } return Max;} int main(){ int i,len,N; unsigned int sum,Max; char array[101]; while(scanf("%d",&N) != EOF){ while(N--){ scanf("%s",array); len = strlen(array); sum = 0; //拼接成一个无符号整数 for(i = 0;i < len;i++){ if(array[i] >= '0' && array[i] <= '9'){ sum = sum * 10 + array[i] - '0'; } } //若字符序列中没有数字或者找出的整数为0,则输出0 if(sum == 0){ printf("0\n"); } else if(sum == 1){ printf("1\n"); } else{ printf("%d\n",Factor(sum)); } } } return 0;}
测试用例:
注意:
举例说明:36的因子包括2,3所以最大因子应该是3
转载地址:http://wkcsi.baihongyu.com/