我一直在解决一个问题,该问题接受m和n的输入并打印包含m到n之间的所有素数。
当我在ideone.com在线IDE中运行时,我获得了成功,我的代码运行完全正常,但问题是这需要几乎4864MB内存
转到链接并检查内存空间。 当程序非常短而且不那么复杂时,为什么需要大量的内存。
import java.util.*;
import java.lang.*;
import java.io.*;
public class Ideone
{
static class FastReader
{
BufferedReader br;
StringTokenizer st;
public FastReader()
{
br = new BufferedReader(new
InputStreamReader(System.in));
}
String next()
{
while (st == null || !st.hasMoreElements())
{
try
{
st = new StringTokenizer(br.readLine());
}
catch (IOException e)
{
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt()
{
return Integer.parseInt(next());
}
long nextLong()
{
return Long.parseLong(next());
}
double nextDouble()
{
return Double.parseDouble(next());
}
String nextLine()
{
String str = "";
try
{
str = br.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
return str;
}
}
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
FastReader s=new FastReader();
int t = s.nextInt();
while(t!=0)
{
int m = s.nextInt();
int n = s.nextInt();
for(int i = m; i<=n; i++)
{
int cnt = 0;
if( (i>2 && i%2 ==0) || (i>3 && i%3==0) || (i>5 && i%5==0) || (i>7 && i%7 ==0) || (i>11 && i%11 ==0))
{
continue;
}
for(int j=1;j <=i; j++)
{
if(i%j ==0)
{
cnt++;
}
}
if(cnt ==2)
{
System.out.println(i);
}
cnt = 0;
}
System.out.println("");
t--;
}
}
}
答案 0 :(得分:1)
我跑了一个问候,世界&#39;在ideone中,它给了我4386816KB的内存使用量。所以我怀疑ideone中的内存使用对你的代码说了什么有用的东西。