码迷,mamicode.com
首页 > 编程语言 > 详细

一本通题库 第一部分 C++语言 --> 第四章 循环结构的程序设计 1098:质因数分解

时间:2020-01-29 23:30:44      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:方法   输出   不同的   center   std   优化   string   缩小   names   

1098:质因数分解


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 20235     通过数: 10212 

【题目描述】

已知正整数nn是两个不同的质数的乘积,试求出较大的那个质数。

【输入】

输入只有一行,包含一个正整数 nn。

对于60%的数据,6n10006≤n≤1000。

对于100%的数据,6n2×1096≤n≤2×109。

【输出】

输出只有一行,包含一个正整数 pp,即较大的那个质数。

 

源代码

#include<iostream>
#include<math.h>
using namespace std;
int main()
{ int n,s;
  cin>>n;
  for(int i=2;i<=sqrt(n);i++)
  { if(n%i==0)
    { s=n/i;
      cout<<s<<endl;
      break;
	}
  }
  return 0;
 } 
这道题中用sqrt(n)来缩小i的筛选范围,i为较小质因数,相对的,必然有一个较大的数与其相乘得到n,即为s,用s=n/i来表示。
若不用sqrt开放,会导致运算超时

改前代码
#include<iostream>
using namespace std;
int main()
{ int n;
  cin>>n;
  for(int i=n-1;i>=2;i--)
  { if(n%i==0)
    { 
      cout<<i<<endl;
      break;
	}
  }
  return 0;
 } 
改动前只有60分,因为前6组数据均可,但后四组数据均运算超时。
所以在一定情况下,可以采用sqrt开平方等方法优化代码,减小复杂度,加快运算速度。
类似的通过分部或分情况的优化方式在插入排序中也有体现。


一本通题库 第一部分 C++语言 --> 第四章 循环结构的程序设计 1098:质因数分解

标签:方法   输出   不同的   center   std   优化   string   缩小   names   

原文地址:https://www.cnblogs.com/jd1412/p/12241789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!