一到考试题,大牛帮忙看一下,有什么问题,就是执行不出来啊。

 如果一个正整数不能被大于1的完全平方数所整除,那么我们就将该数称为无平方数因数的数。例如,靠前的一些无平方数因数的数是{1,2,3,5,6,7,10,11,13,14,15,17,19…}。创建一个class SquareFree,其中包括一个函数getNumber,在给定一个int n后,该函数能够返回第n个最小无平方因数的数。请注意这里是从1开始的,那么如果n=1,该算法将会返回最小的无平方数因数的数。
n 的取值范围为1到1,000,000,000(其中包括1和1,000,000,000) 

package com.imooc.concurrent;

import java.util.Scanner;

public class SquareFree {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第n位的n:");
		System.out.println("输入的是数字:"+sc.nextInt());
		System.out.println("第"+sc.nextInt()+"位的无平方数因数的数为"+getNumber(sc.nextDouble()));
		sc.close();

	}
    public static double getNumber(double n){
    	double count=0, value=0;
    		for(double i=1;i<=Double.MAX_VALUE;i++){
        		for(double j=1;j<=i;j++){
        			if(i%(j*j)!=0){
        				count++;
        				if(count==n){
        					value=i;
        					break;
        					
        				}
        			}
        		}
        	}
    	
    	return value;
	}

}


chore
浏览 2258回答 3
3回答

uSimple

public static int getNum(int n) {     int count = 0;     label:     for (int i = 1; i <= Integer.MAX_VALUE; i++) {         for (int j = 2; j <= i; j++) {             if (i % (j*j) == 0) {                 continue label;             }         }         if (++count == n) { return i; }     }     return 0; }j不能从1开始,另外nextInt()用变量接收下输入一次就够了。

chore

把i设置成j的开平方数效率会更高,我试了。

chore

int报错,但long没有。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java