我需要编写一个代码: 素数是一个大于1的正整数,只能由自身和1整除。您要编写一个程序,重复询问用户一个整数值,然后显示小于或等于该数字的所有素数。
功能要求
程序将提示用户输入正数,或提示值-1以结束程序。如果用户输入0或负数,程序将立即结束。除了整数之外,您的程序在输入上的行为将不会被测试。
对于从2到用户给出的数字的每个数字,程序将确定该数字是否为素数。在下面给出的列式格式中,程序将显示有关素数和非素数的信息。
当表格完成后,程序将显示给定范围内的素数计数和范围内的素数比率。
示例运行
Welcome to the prime number program!
########################################################
Please enter a positive integer: 6
Number Is Prime Counterexample
2 Yes -
3 Yes -
4 No 4 % 2 = 0
5 Yes -
6 No 6 % 2 = 0
3 of the first 6 integers are prime; prime ratio = 0.5
到目前为止,我的程序只会输出:
Welcome to the prime number program!
########################################################
Please enter a positive integer: 2
我的代码是:
import java.util.Scanner;
public class PrimeNumber
{
public static void main(String[] args)
{
Scanner sc =new Scanner(System.in);
System.out.println("Welcome to the prime number program!");
System.out.println("########################################################");
Integer input=getInput(sc);
if(input != null)
{
System.out.println("Number Is Prime Counterexample");
for(int l=2;l<l;l++)
{
int k=isPrime(l);
System.out.println(l+"\t"+(k==-1?"Yes\t\t"+"-":"No\t\t"+l+"%"+k+"=0"));
}
main(args);
return;
}
System.out.println("You Selected to exit ! Good Bye!");
}
public static int isPrime(int input)
{
for(int k=2;k<=input/2;k++)
{
if(input%k==0)
{
return k;
}
}
return -1;
}
public static Integer getInput(Scanner sc)
{
System.out.println("Please enter a positive integer: 2");
String input=sc.next();
Integer i;
try
{
i=new Integer(input);
}
catch(NumberFormatException e)
{
System.out.println("Invalid Input");
i=input.chars().iterator().next();getInput(sc);
}
return i;
}
{
} }
有人可以帮我弄清楚我做错了吗?
答案 0 :(得分:0)
永远不会执行for
循环,因为l
本身永远不会小于l
。您需要从2循环到用户输入的数字:
for(int l=2;l<input.intValue();l++)