嘿我开始使用java进行编程,我的老师在课堂上使用这个例子作为我们的家庭作业,创建一个java程序,在达到用户输入的上限之前打印出每个素数。我不理解第二部分,并想知道是否有人可以帮我向我解释。
import java.util.Scanner;
public class Primes {
public static void main(String args[]) {
//get input for the upper limit
System.out.println("Enter the upper limit: ");
//read in the limit
int limit = new Scanner(System.in).nextInt();
//use for loop and isPrime method to loop through until the number reaches the limit
for(int number = 2; number<=limit; number++){
//print prime numbers only before the limit
if(isPrime(number)){
System.out.print(number + ", ");
}
}
}
//this part of the program determines whether or not the number is prime by using the modulus
public static boolean isPrime(int number){
for(int i=2; i<number; i++){
if(number%i == 0){
return false; //number is divisible so its not prime
}
}
return true; //number is prime now
}
}
答案 0 :(得分:2)
我猜你的意思是第二部分是isPrime方法。
他正在做的是使用'%'运算符,它返回'number'和'i'之间的除法的整数余数。由于素数只是自身的除数和数字1,如果余数为0,则表示不是素数。你的老师用'i'变量循环,直到极限数,并通过查看%操作的结果检查是否有任何数字。
希望这对你有所帮助!!
答案 1 :(得分:0)
在第二部分
if(number%i == 0)
如果有的话,%通常会给你一个余数。
例如 5%2给出1
4%2给出0
for(int i=2; i<number; i++)
在这里,您将从2循环到数字。由于所有数字都可以被1整除,所以从2开始。 你也要在数字(数字-1)之前停止,因为你不想检查这个数字是否可以自行整除(因为它是)。
如果一个数字可以被除1以外的任何其他数字整除(数字从2到数字-1),那么它不是素数。
答案 2 :(得分:0)
如果您需要,只需要一个简短(无效)的参考资料来查找素数:
import processing.serial.*;
import org.gamecontrolplus.gui.*;
import org.gamecontrolplus.*;
import net.java.games.input.*;
String ard_ser = "/dev/ttyACM0";
ControlIO control;
ControlDevice stick;
float px, py;
int deg_x, deg_y;
boolean trailOn;
Serial myPort;
ArrayList<PVector> shadows = new ArrayList<PVector>();
ArrayList<PVector> trail = new ArrayList<PVector>();
public void setup() {
size(400, 400);
myPort = new Serial(this, Serial.list()[0],9600);
printArray(Serial.list());
// Initialise the ControlIO
control = ControlIO.getInstance(this);
// Find a device that matches the configuration file
stick = control.getMatchedDevice("joystick");
if (stick == null) {
println("No suitable device configured");
System.exit(-1); // End the program NOW!
}
// Setup a function to trap events for this button
stick.getButton("LASER").plug(this, "toggleLaser", ControlIO.ON_PRESS);
}
// Poll for user input called from the draw() method.
public void getUserInput() {
px = map(stick.getSlider("X").getValue(), -1, 1, 0, width);
deg_x = int(map(stick.getSlider("X").getValue(),-1,1,0,180));
py = map(stick.getSlider("Y").getValue(), -1, 1, 0, height);
deg_y = int(map(stick.getSlider("Y").getValue(),-1,1,0,180));
//stick.getButton("LASER").plug(this,"toggleLaser",ControlIO.);
}
// Event handler for the Laser button
public void toggleLaser() {
println("laser");
if (myPort.available()>0){
myPort.write("-1\n");
}
//delay(1000);
return;
}
public void draw() {
getUserInput(); // Polling
background(255, 255, 240);
// Draw shadows
fill(0, 0, 255, 32);
noStroke();
for (PVector shadow : shadows)
ellipse(shadow.x, shadow.y, shadow.z, shadow.z);
if ( trail.size() > 1) {
stroke(132, 0, 0);
for (int n = 1; n < trail.size(); n++) {
PVector v0 = trail.get(n-1);
PVector v1 = trail.get(n);
line(v0.x, v0.y, v1.x, v1.y);
v0 = v1;
}
}
// Show position
noStroke();
fill(255, 64, 64, 64);
ellipse(px, py, 20, 20);
String position = str(deg_x)+','+str(deg_y)+'\n';
if (myPort.available()>0){
//println(position);
myPort.write(position);
}
delay(10);
}