这是我的代码我有点新的编程程序的目标是将所有素数在0和用户输入的值之间,每个都在他们自己的行上
import java.util.Scanner;
import java.math.*;
public class Sforprime{
public static void main (String[] args){
double box = 0;
double boxxx = 0;
int po = 0;
int blub = 0;
int no = 1;
Scanner scan = new Scanner (System.in);
System.out.println("input cieling number");
box = scan.nextInt();
boxxx = Math.sqrt(box);
for (int batman = (int)box; batman >= 0; batman--){
if (no == 1){
no = 0;
}
else if (po == 0){
System.out.println(blub);
po = 0;
}
blub = batman;
for (int mot = (int)boxxx; mot >= 2; mot--){
if (po == 1 ){
}
else if (box%mot == 0){
po++;
}
}
if (po == 0){
System.out.println(blub);
}
}
}
}
最终发生的事情是输入号码后没有做任何事情。我在这做错了什么?
答案 0 :(得分:1)
因为你初始化了int mot =(int)boxxx box%mot将为0,po将始终增加为1,因此永远不会被打印。初始化mot = boxxx-1。但建议你使用上面的程序,因为它更干净
答案 1 :(得分:0)
您可以使用此逻辑:
int n,p;
Scanner s=new Scanner(System.in);
System.out.println(“Enter required number upto which prime numbers are needed: ”);
n=s.nextInt();
for(int i=2;i<n;i++)
{
p=0;
for(int j=2;j<i;j++)
{
if(i%j==0)
p=1;
}
if(p==0)
System.out.println(i);
}