一道有关函数运用的题目,分享给大家
题目描述
任意输入两个正整数m,n(1 < m < n ≤ 5000),依次输出m到n之间每个数的最大质因子(包括m和n;如果某个数本身是质数,则输出这个数自身)。
输入
一行,包含两个正整数m和n,其间以单个空格间隔。
输出
一行,每个整数的最大质因子,以逗号间隔。
样例输入
5 10
样例输出
5,3,7,2,3,5
源代码
#include<stdio.h>
int fx(int a)
{
int i,j;
for(i=2;i<=a;i++)
{
//一旦遇见因子,就让数一直整除
while(a%i==0)
{
a/=i;
//当a=1的时候就说明,已经不能再除了,此时的i就是最大质因子
if(a==1)
{
//goto不能乱用,但是goto在一下子退出多层循环有“妙用”
goto result;
}
}
}
//返回i值即最大质因子
result:
return i;
}
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int i;
//flag一般用于对输出用特别要求里面,当然你也可以用其他字母表示
int flag=0;
for(i=m;i<=n;i++)
{
//由于题目的要求,我们将每一项分开处理,这样就可以避免出现末尾还有一个逗号的情况
if(flag==0)
{
printf("%d",fx(i));
flag=1;
}
else
printf(",%d",fx(i));
}
return 0;
}
最后还是那句话记得坚持做题!!!下次见!!!