java打印前N个素数
语句是:编写一个程序,读取整数N并打印前N个素数
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int x = 2;
for(int i = 0; i <= N; i++)
{
int count = 0;
for(int j = 1; j <= x; j++)
if(x%j == 0)
count++;
if(count == 2)
System.out.print(x + " ");
x++;
}
}
当我运行这个代码时,它并没有给出确切的N个数字。例如,对于N=1&;它正在打印前两个素数,对于N=3&;4,它正在打印前3个素数,对于N=5&;6,它正在打印前4个素数,依此类推。这个代码有什么问题
# 1 楼答案
使用动态规划:
任何非素数的数总是至少可被数列中它前面的一个素数整除。 如果任何一个数不与它前面的所有素数相除,那么这个数也是素数
# 2 楼答案
其他人写的代码比你的好,我会解释为什么你的代码不起作用
你不是在搜索前N个素数,而是在搜索N+2的素数。在代码中,
x
从2开始,一直到N+2如果你想找到N个第一个素数,你必须在N不等于0时循环,并且每次找到一个素数时减少N
(等等,这个问题是2015年的……该死)
# 3 楼答案
我认为您的程序中有许多缺陷需要修复,因此我决定编写一个更简单、更优雅的程序
# 4 楼答案
# 5 楼答案