黑马程序员技术交流社区
标题:
程序出错 帮忙找找
[打印本页]
作者:
李龙涛
时间:
2011-7-25 17:15
标题:
程序出错 帮忙找找
问题描述:题目:判断101-200之间有多少个素数,并输出所有素数
public class prime {
public static void main(String[] args) {
double i,count=0;
for(i=101;i<200;i++)
if(isPrime(i)){
System.out.print(i+" ");
count++;
if(count%10==0)
System.out.println();
}
System.out.println("\n"+count);
}
private static boolean isPrime(double n) {
int i;
for( i=2;i<=Math.sqrt(n);i++)
if(n%i==0)
return false;
if(i>=n/2)
return true;
else
return false;
}
}
我到底哪里写错了
作者:
匿名
时间:
2011-7-25 17:51
标题:
龙涛 加油 黑马上认识的朋友
public class Prime {
public static void main(String[] args) {
int i,count=0;
for(i=101;i<=200;i++)
{
if(isPrime(i))
{
System.out.print(i+",");
count++;
}
if(count%10==0)
System.out.println("");
}
System.out.println("\n"+count);
}
private static boolean isPrime(int n) {
int k = (int)Math.sqrt(n);
int i;
for(i=2; i<=k; i++){
if(n % i == 0){
break;
}
}
if(i > k){
return true;
}
return false;
}
}
作者:
匿名
时间:
2011-7-25 20:02
[code]public class prime {
public static void main(String[] args) {
double i,count=0;
for(i=101;i<200;i++)
if(isPrime(i))
{
System.out.print(i+" ");
count++;
if(count%10==0)
System.out.println();
}
System.out.println("\n"+count);
}
private static boolean isPrime(double n)
{
int i;
for( i=2;i<=(int)Math.sqrt(n);i++)
{
if(n%i==0)
return false;
if(i>n/2)
return true;
}
return true;
}
} [/code]
作者:
匿名
时间:
2011-7-26 10:36
标题:
回复 楼主 的帖子
public class prime
{
public static void main(String[] args)
{
for(int n=101; n<=200; n++)
{
boolean tag = true; // 假定n是素数
for(int i= 2;i<n;i++)
{
if(n%i==0)
{
tag = false;
break;
}
}
//System.out.println(tag);
if(tag) System.out.println(n);
}
}
}
这个简单点
作者:
匿名
时间:
2011-7-26 12:02
首先,通过运行可以知道,你这个程序一个数字都没有打,为什么?
因为if(isPrime(i))永远是false,它后面的语句就没有被执行过!
在你的isPrime()方法里面,你想一下中间那个if,一般情况下,一个大于4的数字被开平方后,不会比它的一半还要大,所以中间那个if就不会变成true !
你的程序中,只要把
if(i>=n/2)
return true;
else
这三行注释掉,最后返回一个true就可以了
还有双循环的方法可以参考:
int i,j,count=0;
boolean t=true;
for(i=100;i<=200;i++)
{
t=true;
for(j=2;j<=(int)Math.sqrt(i);j++)
{
if(i%j==0)
{
t=false;
break;
}
}
if(t)
{
System.out.print(i+" ");
count++;
if(count%10==0)
System.out.println();
}
}
System.out.println("\n"+count); */
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2