最大质因子序列

一道有关函数运用的题目,分享给大家

题目描述

任意输入两个正整数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;
}

最后还是那句话记得坚持做题!!!下次见!!!

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值