gpt4 book ai didi

java - 打印出小于给定数 N 的素数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:25 27 4
gpt4 key购买 nike

打印出小于给定数 N 的素数。为了加分,你的解决方案应该在 N*log(N) 中运行时间或更好。你可以假设 N 总是一个正整数。

输入样本:

你的程序应该接受一个文件名路径作为它的第一个参数。此文件中的每一行都是一个测试用例。每个测试用例将包含一个整数 n < 4,294,967,295 .

例如

10
20
100

输出样本:

对于每一行输入,打印出小于N的素数,按升序排列,逗号分隔。 (逗号和数字之间不能有空格)例如

2,3,5,7

2,3,5,7,11,13,17,19

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97

这是我的解决方案:

public class problem1 {

public static void main(String [] args) throws Exception
{
File f=new File("C://Users/Rahul/Documents/Projects/r.txt");
FileReader fr=new FileReader(f);

List<Integer> l=new ArrayList<>();
int p;
BufferedReader br = new BufferedReader(fr);
String s;

while( (s= br.readLine()) != null ) {

int a=Integer.parseInt(s);

for(int i=2;i<a;i++)
{
p=0;
for(int j=2;j<i;j++)
{
if(i%j==0)
p=1;
}
if(p==0)
l.add(i);
}
String st=l.toString();
st=st.replaceAll("\\[", "").replaceAll("\\]", "").replace(", ", ",");
System.out.print(st);
System.out.println("\t");
}

fr.close();
}
}

我的输入是:

10
50

输出是:

2,3,5,7
2,3,5,7,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47

但是当我提交这个解决方案时,他们不接受这个解决方案。

但是当我像这样将内容放入文档中时:

10 50
30

我正在尝试让 java 程序忽略这个 50。该怎么做?

还有更好的解决方案吗?给我一些想法!

最佳答案

要忽略文件中的额外数字,您可以只取每行的第一个数字。

您的解决方案可能不被接受,因为在您的第二行中您打印了两次 2,3,5,7(即上一行的质数)

请参阅下面的示例以解决这两个问题

while( (s= br.readLine()) != null ) {
String [] numbers = s.split(" "); // split the line
int a = Integer.parseInt(numbers[0]); // take only the first one
....

System.out.print(st);
System.out.println("\t");
l.clear(); // clear the list before trying to find primes for the new line
}

关于java - 打印出小于给定数 N 的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18032309/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com