hdu 5108 Alexandra and Prime Numbers(素数)
2016-07-12 09:23
459 查看
Alexandra and Prime Numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1849 Accepted Submission(s): 630
Problem Description
Alexandra has a little brother. He is new to programming. One day he is solving the following problem: Given an positive integer N, judge whether N is prime.
The problem above is quite easy, so Alexandra gave him a new task: Given a positive integer N, find the minimal positive integer M, such that N/M is prime. If such M doesn't exist, output 0.
Help him!
Input
There are multiple test cases (no more than 1,000). Each case contains only one positive integer N.
N≤1,000,000,000.
Number of cases with N>1,000,000 is
no more than 100.
Output
For each case, output the requested M, or output 0 if no solution exists.
Sample Input
3
4
5
6
Sample Output
1
2
1
2
题意:给你n,求一个最小的m使得n/m为素数
思路:先存下100000以内的素数判定,然后每次只要i~[1,sqrt(n)]如果n/i为素数,那么结果为i
如果i为素数,而且1~sqrt(n)没有素数,那么结果就是n/(1~sqrt(n)中最大的素数)
如果两个都不满足,那么不存在,结果为0
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
#define N 100000
int notprime
;
void init()
{
memset(notprime,0,sizeof(notprime));
long long cnt=0;
notprime[0]=notprime[1]=1;
for(long long i=2;i*i<=1000000000;i++)
{
if(notprime[i]) continue;
for(long long j=i*i;j*j<=1000000000;j+=i)
notprime[j]=1;
}
}
long long judge(long long m)
{
if(m==1) return 0;
for(long long i=2;i*i<=m;i++)
if(m%i==0)
return 0;
return 1;
}
int main()
{
init();
long long n;
while(~scanf("%lld",&n))
{
long long now=-1,flag=0;
for(long long i=1;i*i<=n;i++)
{
if(n%i!=0) continue;
if(!notprime[i]) now=i;
if(judge(n/i)){
flag=1;
now=i;
break;
}
}
if(flag) printf("%lld\n",now);
else if(!flag&&now==-1) printf("0\n");
else printf("%lld\n",n/now);
}
return 0;
}
相关文章推荐
- 《JavaScript语言精粹》学习笔记——2.语法
- 使用iScroll时input复选框不能选中解决方法
- 算法设计与分析笔记(一)递归与分治策略
- 习题2 注释和#号
- 关于Android的.so文件你所需要知道的
- 中央缓存结合本地缓存-本地缓存数据刷新方案
- 浅谈Android屏幕和语言的适配
- HTML的发展历史
- CSS3选择器一
- hdu3530 单调队列
- 理解透彻--802.1d,802.1w,802.1s与802.1q
- html中类似qq状态的布局,评论+初学者实现方式
- C语言文件操作之fgets()
- 2016.07.11回顾
- 进程之间的8种通信方式
- myeclipse如何设置编码格式
- Logistic回归
- 硬币组合
- iOS App开发中扩展RCLabel组件进行基于HTML的文本布局
- 编译器错误消息: CS1061: “ASP.yemian_reg_aspx”不包含“Button1_Click1”的定义,并且找不到可接受类型为“ASP.yemian_reg_aspx”的第一个参数的