回 帖 发 新 帖 刷新版面

主题:java问题求大神指点

7、编写程序J_PrimeNumber.java,请用户输入一个正整数,然后保存小于该数的所有素数到out.txt文档;如果用户输入的不是正整数,则提示用户“请输入一个正整数”。


import java.io.*;

public class J_PrimeNumber{
    
    public static int getInt(BufferedReader f)
    {
        try
        {
            String s=f.readLine();
            int i=Integer.parseInt(s);
            return i;
        }
        catch(Exception e)
        {
            return -1;
        }
    }
    
    public static void main(String args[])
    {
        int a;
        try
        {
            BufferedReader f = 
                new BufferedReader(new InputStreamReader(System.in ));
                a=getInt(f);
                    for(int i=2;i<a;i++)
                    {
                        for(int j=2;j<=sqrt((double)i);j++)
                        {
                            if(i%j==0)
                            break;
                            
                            
                        }
                    }
                
        }
        catch (Exception e)
        {
            System.err.println("发生异常:" + e);
            e.printStackTrace( );
        }
        
    } 
    
}



这是我写的未完成的代码 以及题目要求。两个for循环中,内层的for循环旨在判断素数。但是我发现不管是不是素数,在循环结束后依旧可以跳出。达不到仅仅输出素数的目的。求大神指点。


回复列表 (共4个回复)

沙发

import java.io.*;
import java.util.Scanner;

public class J_PrimeNumber{
    static int sushu(int m)
    {
         int i=0,j;     
         for(j=2;j<=Math.sqrt(m);j++) 
         {
          if(m%j==0)
           break;
         }
         if (j>Math.sqrt(m)&&m!=1){
          i=m;
         }
         else{
         i=-1;
         }
         return i; 

    }
    public static void main(String args[])
    {  
         int num=0;
         Scanner scanner =new Scanner(System.in);      
        try
        { 
            num=scanner.nextInt();
        }
        catch(Exception e)
        {
            System.out.println( "请输入一个整数");
        }
        try{
            PrintStream f=new PrintStream("out.txt");
            for(int j=2;j<=num;j++)
            if(sushu(j)!=-1)
            f.println(j);
            f.close();    
            }
        catch(Exception e)
        {
            System.err.println("发生异常:"+e);
            e.printStackTrace();
        }
    
        }
        
    } 
    
仅供参考,来自外星球

板凳

啊!大神![em5]

3 楼

判断素数那个写的比较精妙

4 楼

最近在玩微博的时候,偶尔去博客转下,结果发现有个博客写的文章都是关于编程、JAVA的,结果我就走眼观花看了几篇,说真的写还不错,还有几篇是关于JAVA视频的。大家有时间可以去看看http://blog.sina.com.cn/u/2597264723
这是上边的一段文章
教学目标:
i掌握数组的声明和创建
i掌握数组初始化
i掌握数组元素的访问
i掌握多维数组
i掌握数组的复制
i掌握基本的排序算法和数组的排序
 

一、数组的声明和创建                                                      
1.数组是什么?                                                                  
数组是由相同类型的若干项数据组成的一个数据集合。也就是说数组是用来集合相同类型的对象并通过一个名称来引用这个集合,数组是引用类型。
2.数组的声明                                                                                         
你可以声明任何类型的数组──原始类型或引用类型:
char s[];
Point p[]; // 这里Point是一个类
在Java编程语言中,即使数组是由原始类型构成,甚或带有其它引用类型,数组也是一个对象。声明不能创建对象本身,而申请得到的是一个引用,该引用可被用来存放数组对象的首地址。数组元素使用的实际内存可由new语句或数组初始化软件动态分配。在后面,你将看到如何创建和初始化实际数组。
上述这种将方括号置于变量名之后的声明数组的格式,是用于C、C++和Java编程语言的标准格式。这种格式会使声明的格式复杂难懂,

我来回复

您尚未登录,请登录后再回复。点此登录或注册