我的项目是打印0到100之间的素数,但每行显示5个素数。
//Display the output of 5 numbers per row.
System.out.print(" " + i);
if(i % 5 == 1) {
System.out.print("\n");
}
质数的输出工作正常,我只是努力让它们分配到每行5个值。
当前输出如下:
0-100 Prime数字是:
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
这是用于每行调整5个值的代码。
WinForms
答案 0 :(得分:2)
您无法再次使用i
,您需要使用新变量(我使用currentPrime
)。
因为i
本身就是素数,而不是素数的索引。
此外,您需要在for循环中向i = 1
添加更改int i = 1
,否则代码将无法编译。
int currentPrime = 1;
for (int i = 1; i <= 100; i++) {
int counter=0;
for(int num =i; num>=1; num--)
{
if(i % num == 0)
{
counter = counter + 1;
}
}
if (counter == 2)
{
//Display the output of 5 numbers per row.
System.out.print(" " + i);
currentPrime++;
if(currentPrime % 5 == 1)
{
System.out.print("\n");
}
//Prime number is assigned to the empty string class variable.
displayPrimes = displayPrimes + i + " ";
}
}
答案 1 :(得分:1)
只需添加一个int变量来计算每行打印的素数。当它连续打印5个数字时,它会转到下一行,然后重置计数器(将变量设置为0)。像这样:
int count =0;
for (i = 1; i <= 100; i++) {
int counter=0;
for( num =i; num>=1; num--)
{
if(i % num == 0)
{
counter = counter + 1;
}
}
if (counter == 2)
{
//Display the output of 5 numbers per row.
System.out.print(" " + i);
count++;
if(count == 5) {
System.out.print("\n");
count = 0;
}
//Prime number is assigned to the empty string class variable.
displayPrimes = displayPrimes + i + " ";
}
}
答案 2 :(得分:1)
通过检查
if (i % 5 == 1)
你正在检查除以5之后的余数是否为1.由于我是你的素数,这只意味着每当你的素数是1而不是5的倍数时会打印一个新行(因此为什么它在11,31,41等之后给了你一个新的一行。
您需要做的是设置一个单独的计数器变量,以跟踪您在该行上打印的素数。每次打印新的素数时都可以递增此变量,然后打印新行并在达到5后重置主计数变量。
答案 3 :(得分:0)
以下是用户提到的指令的代码实现:707090
public class PrimeNumberInRange {
public static void main(String[] args) {
printPrimeNumbersInRange(2, 1000);
}
// returns true/ false
public static boolean isPrime(int n) {
if (n < 2) {
return false;
}
for (int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
// returns the list of number between min and max...
public static void printPrimeNumbersInRange(int min, int max) {
if (min < 2 || max < 2) {
System.out.println("Invalid range, should start with at least 2");
} else {
int count = 0;
for (int i = 0; i <= max; i++) {
if (isPrime(i)) {
System.out.print(i+" ");
count++;
if (count % 10 == 0 ) {
System.out.println();
}
}
}
}
}
}