减法操作 已AC

目录

题目描述

输入格式

输出格式

数据范围

输入样例1:

输出样例1:

输入样例2:

输出样例2:

解题思路

代码 ​​​​​​​

题目描述

给定一个整数 nn,执行如下算法:

  1. 如果 n=0n=0,则结束算法。
  2. 找到 nn 的最小质因子 dd。
  3. 令 nn 减去 dd 并跳转步骤 11。

请你计算,在算法执行的过程中,一共进行了多少次减法操作。

输入格式

一个整数 nn。

输出格式

一个整数,表示减法操作的次数。

数据范围

前三个测试点满足 2≤n≤52≤n≤5。
所有测试点满足 2≤n≤10102≤n≤1010。

输入样例1:

5

输出样例1:

1

输入样例2:

4

输出样例2:

2

解题思路

(参考AcWing 4492. 减法操作(数学方法) - AcWing

质因子定义:

质因子_百度百科 (baidu.com)

 偶数的最小质因子为2,减去2之后还是偶数,所以n等于偶数时直接n/2就好

奇数的最小质因子要用for循环一个一个试for(i=3;i*i<=n;i+=2),试出来后n-i一定是偶数,也直接n/2再加1,因为还有减去i的一次,然后return0;结束就好。

注意如果n为质数则使用for循环是试不出来的,所以要在for外边加printf("1");

代码 

#include<stdio.h>

int main()
{
    long long n,j,i,a,b,c,d;
    a=0;
    scanf("%lld",&n);
    if(n%2!=0)
    {
        for(i=3;i*i<=n;i+=2)
        {
            if(n%i==0)
            {
                n=n-i;
                
                a+=(n/2)+1;
                printf("%lld",a);
                return 0;
            }
            
        }
        printf("1");
    }
    else
    {
        a+=n/2;
        printf("%lld",a);
    }
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值