首页 > 代码库 > 约数与素数
约数与素数
好吧,今天一整天都是用循环求各种数,想破了我的小脑袋啊!
参考: 《Java语言程序设计(基础篇)》P—161
所谓素数,就是只能被1和它自身整除的数字。
约数,我想大家都应该知道公约数吧,那么,我们就先从简单的求一个数的最小因子/约数
开始 !
【demo是项目名称,Welcome是公共类名,和java文件的前缀名是一样的,首字母必须大写】
1 package demo; 2 3 public class Welcome { 4 public static void main(String[] args) { 5 int factor = 9; 6 int divisor = 2; 7 8 while (divisor < factor) { 9 if (factor % divisor == 0)10 break;11 divisor++;12 }13 System.out.println(factor + "除1之外的最小约数是: " + divisor);14 }15 }
break 是用来跳出while循环用的!
-------------------------------------------------------------------------------------------------
接下来是稍微难一点的求两数的最大公约数
【公约数是指能同时被两个整数整除的数: 所以下面用到了&&,表示"和"的意思】
1 package demo; 2 3 import java.util.Scanner; 4 5 public class Welcome { 6 public static void main(String[] args) { 7 Scanner input = new Scanner(System.in); 8 9 System.out.print("输入两个整数: ");10 int num1 = input.nextInt();11 int num2 = input.nextInt();12 int gcd = 2;13 int divisor = 2;14 15 while (divisor <= num1 && divisor <= num2) {16 if (num1 % divisor == 0 && num2 % divisor == 0) {17 gcd = divisor;18 }19 divisor++;20 }21 System.out.println(num1 + "和" + num2 + "的最大公约数是: " + gcd);22 }23 }
因为我们要求出的是最大的那个公约数,所以要让divisor(被除数, divisor++;)每次自增1, 直到大于
num1或num2为止。这样,最后一个可以被整除的数( gcd = divisor; )就是最大公约数啦!
---------------------------------------------------------------------------------------------------
Q~Q Boss登场,该是求素数的时候啦! ! !
1 package demo; 2 3 public class Welcome { 4 public static void main(String[] args) { 5 System.out.println("显示从2开始的前五十个素数: "); 6 7 int count = 0; 8 int num = 2; 9 10 while (count < 50) {11 boolean isPrime = true;12 for (int divisor = 2; divisor <= num / 2; divisor++) {13 if (num % divisor == 0) {14 isPrime = false;15 break;16 }17 } 18 /** 这里的println表示打印完后自动换行, 由于我们每行要放十个素数,19 所以在第十个数打印完后要换行, 因此在少于十个数时用先用print, 然20 后在第十个数之后用println **/21 22 if (isPrime) {23 count++;24 if (count % 10 == 0) 25 System.out.println(num);26 else27 System.out.print(num + " ");28 }29 num++;30 }31 }32 }
【注意: 这里易错点是把boolean isPrime = true;放在循环前面。这样一旦遇到第一个非素数4,isPrime将永远是false】
只打印非素数4之前的两个素数......
正确的结果:
约数与素数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。