public class ex
{
public static void main(String[] args)
{
int i,j,k;
for(i=3;i<101;i++)
{
for(j=2;j<i;j++)
{
k=i%j; /* k是余数 */
if (j==(i-1)) System.out.println(i); /*如果除到自本身-1的数为止还不被整除就输出*/
else if (k==0) break; /*如果被整除了就跳出 */
}
}
}
}
刚刚学习完第一单元开始做习题,做了个求100内的素数的题目,本来思路是因为1为固定素数没考虑进去,后来不知道怎么连2这个都忘记了,从3开始计算的。结果做完之后发觉忘记了2,于是将i和j改为初值为2和1,然后编译OK,但是输出后要么是个单独的2要么是直接没有任何字符输出,而之前i,j为3,2的时候输出是3~100之间的素数。
{
public static void main(String[] args)
{
int i,j,k;
for(i=3;i<101;i++)
{
for(j=2;j<i;j++)
{
k=i%j; /* k是余数 */
if (j==(i-1)) System.out.println(i); /*如果除到自本身-1的数为止还不被整除就输出*/
else if (k==0) break; /*如果被整除了就跳出 */
}
}
}
}
刚刚学习完第一单元开始做习题,做了个求100内的素数的题目,本来思路是因为1为固定素数没考虑进去,后来不知道怎么连2这个都忘记了,从3开始计算的。结果做完之后发觉忘记了2,于是将i和j改为初值为2和1,然后编译OK,但是输出后要么是个单独的2要么是直接没有任何字符输出,而之前i,j为3,2的时候输出是3~100之间的素数。
public class ss {
public static void main(String args[]) {
int i,j;
for(j=2;j<=100;j++) {
for(i=2;i<=j/2;i++) {
if(j%i==0)
break;
}
if(i>j/2) {
System.out.println(j);
}
}
}
}
第一次:i=2,j=1 ==> k=0 ==> println; ==> 2被打印
第二次:i=2,j=2 ==> 不满足内循环条件
第三次:i=3,j=1 ==> k=0 ==> break;
……以后就都是break了===================================else if (k==0) break; /*如果被整除了就跳出 */==〉if (k==0 && j!=1) break; /*如果被整除了就跳出 */===================================if (i>j) {
XXX
} else if (i<j) {
YYY
} else if (i==j) {
ZZZ
}
良好的习惯:else if (){}括号中,用来判断条件的变量,最好尽量与if()中的相同。
第一次循环时,i=2,j=1,k=0,先判断条件if(j==(i-1)),返回true,所以输出了2,
i从3之后,每次j=1时,k都等于0,直接就break了,一直到结束。你这段程序的逻辑、执行效率、代码风格等都需要改进加强,但初学java一般都要经历这样一个过程。
public static void main(String[] args){
int j,k;
for(int i=1;i<101;i++){
k=1;
j=0;
while(k<=i){
if(i%k==0){
j++;
}
k++;
}
if(j<=2&&j>1){
System.out.print(i+",");
}
}
System.out.println();
}
}