| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
没办法了,快崩溃了,help...........把这个题目细细的读了好几遍,实在发现不了我的程序哪里错了,高手帮忙看一下吧。感激。。。。
import java.util.*;
import java.io.*;
import java.math.BigInteger;
public class Main1411
{
public static void main(String [] args)throws Exception
{
InputStream in=new FileInputStream("c:\\in.txt");
Scanner cin=new Scanner(in);
int prime[]=new int[10000];
int length=f(prime);
while(true)
{
int m,a,b;
m=cin.nextInt();a=cin.nextInt();b=cin.nextInt();
if(m==0)break;
int max=0;
int p=0,q=0;
for(int i=0;i<length;i++)
{
if(prime[i]*prime[i]>m)break;
for(int j=find(prime,(int)(prime[i]*b/(double)a))+10;j>=i;j--)
{
int tarea=prime[j]*prime[i];
if(tarea>max&&tarea<=m&&prime[j]*a<=prime[i]*b)
{
max=tarea;
p=prime[i];
q=prime[j];
}
}
}
System.out.println(p+" "+q);
}
}
private static int f(int [] prime)
{
prime[0]=2;
int index=1;
for(int i=3;i<100000;i+=2)
{
boolean tag=true;
int end=(int)Math.sqrt(i)+1;
for(int j=3;j<=end;j+=2)
if(i%j==0)
{
tag=false;
break;
}
if(tag)
prime[index++]=i;
}
return index;
}
private static int find(int [] prime,int x)
{
for(int i=0;i<prime.length;i++)
{
if(prime[i]<=x);
else return i;
}
return -1;
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator