| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3007 人关注过本帖
标题:新人学习JAVA有个程序卡了半天,望大神帮忙!
只看楼主 加入收藏
柏拉图的理想
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-11-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
新人学习JAVA有个程序卡了半天,望大神帮忙!
题目:我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

package 素数的相加;

import java.util.Scanner;

public class 素数相加实验2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int sum=0;
        
        int isPrime=1;
        for(;n<=m;n++)
        {
        for(int i=2;i<n;i++)
        {
            if(n%i ==0)
            {
                isPrime=0;
                break;
            }
        }
        if(isPrime==1)
        {
            sum=sum+n;
        }
        else
        {
            sum=sum+0;
        }
        }
        System.out.println("素数之和:"+sum);
        in.close();

    }

}
(望大神帮忙指出错误之处,小弟感激不尽)
搜索更多相关主题的帖子: import package public JAVA method 
2015-11-20 09:58
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:5 
每次isPrime都要初始化

一片落叶掉进了回忆的流年。
2015-11-20 10:15
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:15 
程序代码:
 public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int sum=0;
        
        int isPrime=1;
        n=n<2?2:n;
        for(;n<=m;n++)
        {
            for(int i=2;i*i<=n;i++)
            {
                if(n%i ==0)
                {
                    isPrime=0;
                    break;
                }
            }
            sum+=isPrime==1?n:0;
            isPrime=1;
        }
        System.out.println("素数之和:"+sum);
        in.close();
    }

剑栈风樯各苦辛,别时冰雪到时春
2015-11-20 11:04
柏拉图的理想
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-11-20
收藏
得分:0 
回复 3楼 林月儿
1. n=n<2?2:n;
2. i*i<=n;
3. sum+=isPrime==1?n:0;
   isPrime=1;
这三个是什么意思,我有点看不懂
2015-11-20 11:48
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
百度三目运算符

剑栈风樯各苦辛,别时冰雪到时春
2015-11-20 12:34
柏拉图的理想
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2015-11-20
收藏
得分:0 
以下是引用林月儿在2015-11-20 11:04:54的发言:

 public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int sum=0;
        
        int isPrime=1;
        n=n<2?2:n;
        for(;n<=m;n++)
        {
            for(int i=2;i*i<=n;i++)
            {
                if(n%i ==0)
                {
                    isPrime=0;
                    break;
                }
            }
            sum+=isPrime==1?n:0;
            isPrime=1;
        }
        System.out.println("素数之和:"+sum);
        in.close();
    }

太感谢了,这答案!
2015-11-20 12:57
李小东
Rank: 1
来 自:云南
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-1-2
收藏
得分:0 
import java.util.Scanner;

public class 素数相加实验2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int sum=0;
        
        int isPrime=1;
        for(;n<=m;n++)
        {
        for(int i=2;i<n;i++)
        {
            if(n%i ==0)
            {
                isPrime=0;
                break;
            }
        }
        if(isPrime==1)
        {
            sum=sum+n;
        }
        else
        {
            sum=sum+0;
        }
        }
        System.out.println("素数之和:"+sum);
        in.close();

    }

}


在第二个for的第一个if里面,isPrime被化为0了。你可以在找到素数的时候,再把它化为1.就是下面这个

import java.util.Scanner;

public class 素数相加实验2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        int sum=0;
        
        int isPrime=1;
        for(;n<=m;n++)
        {
        for(int i=2;i<n;i++)
        {
            if(n%i ==0)
            {
                isPrime=0;
                break;
            }
   
    if(n%i ==1){//就是这里,
        isPrime=1;
        break;                        
        }


        }
        if(isPrime==1)
        {
            sum=sum+n;
        }
        else
        {
            sum=sum+0;
        }
        }
        System.out.println("素数之和:"+sum);
        in.close();

    }

}

希望对你有帮助,谢谢


我是小白,希望在这里学到的更多。
2016-01-25 01:51
快速回复:新人学习JAVA有个程序卡了半天,望大神帮忙!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040541 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved