JAVA中怎么用开方法(sqrt()函数)求素(质)数?
JAVA中,用开方法计算出1到任意整数段的素数,这利用了一个定义:如果一个数不是素数且不等于1,那么它的最小质因数小于等于他的平方根。
操作方法
- 01
第一步:先用Scanner赋值语句对要求的整数段进行定位。 Scanner in=new Scanner(System.in);//Scanner赋值语句标准格式 int x;//随便定义一个整数值来装定位值 System.out.println(" 请输入要求的素数范围:");//加入一个提示语句 x=in.nextInt();//从键盘输入定位值到x中 System.out.println(" 1到"+x+"内的素数有:");//加入一个提示语句
- 02
第二步:双重for循环与开方函数结合求素数。 int i,n;//定义两个整型变量 for(i=2;i<=x;i++)//外层for循环到x才停止 { for(n=2;n<=(int)Math.sqrt(i);n++) //核心语句:内层变量<=(int)Math.sqrt(外层变量) { if(i%n==0) break; //筛除合数 } if(n>(int)Math.sqrt(i))//判断是否为素数 System.out.print(" "+i);//输出素数 }
- 03
完整程序展示: import java.util.*; public class Chord { public static void main(String args[]){ Scanner in=new Scanner(System.in); int x; System.out.println(" 请输入要求的素数范围:");//加入一个提示语句 x=in.nextInt(); System.out.println(" 1到"+x+"内的素数有:"); int i,n; for(i=2;i<=x;i++) { for(n=2;n<=(int)Math.sqrt(i);n++) //核心语句:内层变量<=(int)Math.sqrt(外层变量) if(i%n==0)break; if(n>(int)Math.sqrt(i)) System.out.print(" "+i);//s } } }