noip练习题 下载本文

内容发布更新时间 : 2024/5/23 17:47:10星期一 下面是文章的全部内容请认真阅读。

1.质因数分解 描述

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

格式

输入格式

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

输出格式

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

样例1

样例输入1

21

样例输出1

7

限制

1S

提示

【数据范围】 对于60%的数据,6 ≤ n ≤ 1000。 对于100%的数据,6 ≤ n ≤ 2*10的9次方 问题分析:

如果一个数n是两个素数的乘积,那么其中一个素数必然小于或等于n的开平方。

AC的C++程序如下:

1. #include 2. #include 3.

4. using namespace std; 5.

6. int main() 7. {

8. long n; 9.

10. cin >> n; 11.

12. if(n % 2 == 0)

13. cout << n / 2 << endl; 14. else {

15. int start = sqrt(n) / 2; 16. start = start * 2 + 1; 17.

18. for(int i=start; i>=3; i-=2) { 19. if(n % i == 0) {

20. cout << n / i << endl; 21. } 22. } 23. } 24.

25. return 0; 26. }

2.级数求和

问题分析:简单的求和比较问题。 程序说明:需要注意类型。

描述

已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。

现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

格式

输入格式

输入 k

输出格式

输出 n

样例1

样例输入1

1

样例输出1

2

限制

每个测试点1s

AC的C++程序如下:

1. #include 2.

3. using namespace std; 4.

5. int main() 6. {

7. int k;

8. long n = 0; 9. double sum = 0; 10.

11. cin >> k;

12. while(sum <= k) { 13. n++;