黑马程序员技术交流社区
标题:
求教一个程序的逻辑问题
[打印本页]
作者:
a302550641
时间:
2016-3-8 20:38
标题:
求教一个程序的逻辑问题
题目是昨天论坛的问题,输出素数。捉摸了好久,还目前还没学到那里,不清楚问题出在哪
package luntan;
/*
* 分析以下需求,并用代码实现:
* (1)打印1-100之间的所有素数及个数
* (2)每行输出5个满足条件的数,之间用空格分隔
* (3)如果一个大于1的自然数,这个数只能被1和其本身整除,这个数就叫素数。
* (4)如:2 3 5 7 11
*/
public class Sushu {
public static void main(String[] args) {
prime(100);
}
public static void prime(int num){
//System.out.println("素数的个数为: "+row);
for(int i=2,temp=0;i<=num;i++){ //i是当前数字,m是从1到i. temp判断是不是素数
int row=0;
for(int m=1;m<=i;m++){ //遍历i,
if(i%m==0){ //如果i/m余数为0,整除,temp自加
temp++;
}
if(temp<=2){ //如果i整除m的次数小于等于2,则是素数
System.out.print(i+" ");
row++;//每行5个数,row自加
}
if(row==5){ //够5个数 换行
System.out.println();
}else{
break;
}
}
}
}
}
输出素数个数的方法没写,就写了5个一行输出每个素数,还没写好····
作者:
a5597698
时间:
2016-3-8 21:24
稍微改进了一下,你试一下看能不能用
public static void main(String[] args) {
// TODO Auto-generated method stub
prime(100);
}
public static void prime(int num){
//System.out.println("素数的个数为: "+row);
ArrayList<Integer> al =new ArrayList<>();
for(int i=2;i<=num;i++){ //i是当前数字,m是从1到i. temp判断是不是素数
int temp=0; //这里temp要单独写,不要写在for()里
for(int m=1;m<=i;m++){ //遍历i,
if(i%m==0){ //如果i/m余数为0,整除,temp自加
temp+=1;
}
}
if(temp<=2){ //如果i整除m的次数小于等于2,则是素数
System.out.println(i+"是素数");
al.add(i); //将素数添加进集合
}
}
for (int i = 1; i < al.size(); i++) { //遍历集合
System.out.print(al.get(i) + ","); //在控制台打印每一个数
if(i%5==0){ //如果打印数有5个了,就换行
System.out.println();
}
}
}
}
作者:
365708064
时间:
2016-3-8 21:37
学习学习,这个题有点复杂,挺有意思
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2