noip2012普及组——质因数分解
【问题描述】
已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数。
【输入】
输入文件名为 prime.in。
输入只有一行,包含一个正整数 n。
【输出】
输出文件名为 prime.out。
输出只有一行,包含一个正整数 p,即较大的那个质数。
【输入样例】
21
【输出样例】
7
【数据范围】
对于 60%的数据,6 ≤ n ≤ 1000。
对于 100%的数据,6 ≤ n ≤ 2*10^9
算法 1 暴力解法
根据”对于 60%的数据,6 ≤ n ≤ 1000,易得出模拟解法。
将数字从 1 循环到 trunc(sqrt(n)),得到第一个可以被 n 整除的数字再判断是否为素数,以
此类推。
期望得分:60 实际得分:70
算法 2 欧拉筛选法
根据” 对于 100%的数据,6 ≤ n ≤ 2*10^9。”易得出 trunc(sqrt(2*10^9))<50000,
故可用筛选法求解,其他同算法 1。
期望得分:100 实际得分:100
算法 3 模拟法
根据小学知识两个素数的积一定是合数且只有 3 个因子,可以得出最简单的算法。
期望得分:100 实际得分:100
算法1程序:
#include<stdio.h>
#include<math.h>
int fun(int p);
int main()
{
int n,t,i,flag=;
long a,b; scanf("%d",&n);
t=n/;
for(i=t;i>=;i--)
{
if(n%i==)//i是n的约数
{
if(fun(i)==&&fun(n/i) )//i是质数而且n/i也是质数
{
flag=;
break;
}
}
}
if(flag==)
{
printf("%d\n",i);
}
return ;
}
int fun(int p)//判断p是否质数,yes返回1,no返回0.
{
int i,t=sqrt(p);
for(i=;i<=t;i++)
{
if(p%i==)
{
return ;
}
}
return ;
}
算法2程序:
#include<iostream>
#include<cstdio>
#include<fstream>
#include<cmath> using namespace std;
#define fin cin
#define fout cout
short pr[]={};
int main()
{
//ifstream fin("prime.in");
//ofstream fout("prime.out");
pr[]=;
int n,maxi=;
fin>>n;
for(int i=;i<=(int)sqrt(n);i++)
{
if(pr[i]==)
{
for(int j=i*;j<=(int)sqrt(n);j+=i)
{
pr[j]=;
}
if(n%i==)maxi=n/i;
}
}
fout<<maxi<<endl;
return ;
}
算法3程序:
#include<cstdio>
#include<iostream>
using namespace std;
int n;
int main()
{
freopen("prime9.in","r",stdin);
//freopen("output.txt","w",stdout);
scanf("%d",&n);
for(int i=;i<=;i++) if(n%i==) { cout<<n/i<<endl; break;}
return ;
}
noip2012普及组——质因数分解的更多相关文章
- NOIP2012 普及组真题 4.13校模拟
考试状态: 我今天抽签看了洛谷的… 这我能怂???凶中带吉,我怕考试??我!不!怕! 看着整个机房的男同学们,我明白我是不会触发我的忌了.很好,开刷. A. [NOIP2012普及组真题] 质因数分解 ...
- 【NOIP2012普及组】质因数分解
P1075 质因数分解 假期第一天就给一道入门难度的题写题解…… 这道题一开始就被我想复杂了:埃式筛,欧拉筛……然而开一个1e9的数组?不现实. 直到看到题解区的dalao用唯一分解定理: 算术基本定 ...
- NOIP2012 普及组 T3 摆花——S.B.S.
题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...
- [NOIP2012] 普及组
寻宝 大模拟 #include<iostream> #include<cmath> #include<algorithm> using namespace std; ...
- NOIP2012普及组 (四年后的)解题报告 -SilverN
本章施工仍未完成 现在的时间是3.17 0:28,我困得要死 本来今天(昨天?)晚上的计划是把整个四道题的题解写出来,但是到现在还没写完T4的高效算法,简直悲伤. 尝试了用floyd写T4,终于大功告 ...
- [Noip2012普及组]摆花
Description 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆.通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号.为了在门口展出更多种花,规定 ...
- 洛谷P1077 [NOIP2012普及组]摆花 [2017年四月计划 动态规划14]
P1077 摆花 题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能 ...
- C++算法代码——质因数分解[NOIP2012普及组]
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1102 题目描述 已知正整数 n 是两个不同的质数的乘积,试求出较大的那个质数. 输入 ...
- NOIP2012 普及组 寻宝
题目描述 Description 传说很遥远的藏宝楼顶层藏着诱人的宝藏.小明历尽千辛万苦终于找到传说中的这个藏宝楼,藏宝楼的门口竖着一个木板,上面写有几个大字:寻宝说明书.说明书的内容如下: 藏宝楼共 ...
随机推荐
- 排版字号对应多少pt
各字号对应多少pt?初号= 42pt: 小初号= 36pt: 一号= 26pt: 二号= 22pt: 小二号= 18pt: 三号= 16pt: 四号= 14pt: 小四号= 12pt: 五号= 10. ...
- 使用Qemu调试内核
利用Qemu进行内核源码级调试 http://blog.csdn.net/gdt_a20/article/details/7231652 用Qemu调试Linux内核 http://blog.chin ...
- 如何去除内联元素(inline-block元素)之间的间距(转载)
如何去除内联元素(inline-block元素)之间的间距 前几天写一个专题页 div{width:900px;}div a{ display:inline-block; width:300px; ...
- swift SDWebImage使用
Web image(网络图像) 该库提供了一个支持来自Web的远程图像的UIImageView类别它提供了: 添加网络图像和缓存管理到Cocoa Touch framework的UIImageView ...
- 5、C#基础整理(for 语句经典习题--与 if 的嵌套)
1.for循环最基本运用:小球每次落地后再弹起是以前的4/5,求第5次弹起后的高度 ; i < ; i++) { high = high*/; } Console.WriteLine(" ...
- 2、SQL基础整理(聚合函数)
聚合函数 --求平均 select AVG(age) as 年龄 from xuesheng select AVG(chinese) as 语文 from xuesheng where class ...
- 数据库 SQL优化
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- HDU 5009
http://acm.hdu.edu.cn/showproblem.php?pid=5009 题意:一个数列,每个点代表一种颜色,每次选一个区间覆盖,覆盖的代价是区间内颜色种类数的平方,直到覆盖整个数 ...
- MAC OSX使用公钥方式登录Linux服务器并进行安全加固
登录Linux服务器的方式一般是使用ssh,直接使用密码登录既要记忆密码在输入过程中又有安全风险.所以本文将提供一个使用公钥登录的方式来解决输入密码的问题. 首先在mac上生成一个私钥.公钥对 首先, ...
- hdu 4253 Two Famous Companies BZOJ 2654 tree
[题意]:给出n个点,m条边,边分为两种,一种是A公司的,一种是B公司的.边上有权值,问用n-1条边把n个点连起来的最小费用是多少,其中A公司的边刚好有k条.题目保证有解. 思路:我们发现,如果我们给 ...