关于素数的简单算法整理
来源:互联网 发布:斐波那契数列java递归 编辑:程序博客网 时间:2024/06/06 04:17
1、梅森尼数import java.util.ArrayList;public class text6 { /** * 梅森尼数(2的N次方减一是素数,N也必须是素数) */ private static ArrayList<Integer> list = new ArrayList<Integer>(); private static ArrayList<Integer> list1 = new ArrayList<Integer>(); public static void main(String[] args) { // 求出(2的30次方的所有情况) fun(); fun2(); System.out.println("2的30次方以内的所有情况:"); show(); } // 求出1~30所有的素数并存放在list里面 public static void fun() { for (int i = 1; i < 30; i++) { if (fun1(i)) { list.add(i); } } } // 判断数字是否素数 public static boolean fun1(int k) { int i; for (i = 2; i < k; i++) { if (k % i == 0) { return false; } } if (i == k) { return true; } return false; } // 按照题目要求求出所有的梅森尼数保存在list1中 public static void fun2() { for (int i = 0; i < list.size(); i++) { if (fun1((int) (Math.pow(2, list.get(i)) - 1))) { list1.add(list.get(i)); } } } // 按照题目要求打印 public static void show() { for (int i = 0; i < list1.size(); i++) { // int sum=(int) (Math.pow(2, list1.get(i))-1); System.out.println("2^" + list1.get(i) + "-1=" + (int) (Math.pow(2, list1.get(i)) - 1)); } }}
2、哥德巴赫猜想(任何大于2的偶数都能表示为两个素数之和)
package com.fit.getPingyin;import java.util.ArrayList;public class text8 { /** * 等差素数数列 */ private static ArrayList<Integer> list = new ArrayList<Integer>(); public static void main(String[] args) { fun(); System.out.println("100以内所有的等差素数数列:");// 最多只能解决100以内,其他不敢保证,存在问题 fun2(); } // 求出1~100所有的素数并存放在list里面 public static void fun() { for (int i = 1; i < 100; i++) { if (fun1(i)) { list.add(i); } } } // 判断数字是否素数 public static boolean fun1(int k) { int i; for (i = 2; i < k; i++) { if (k % i == 0) { return false; } } if (i == k) { return true; } return false; } // 根据条件求出所有的等差素数数列(还需要改进,存在漏洞) public static void fun2() { for (int i = 0; i < list.size(); i++) { for (int j = 0; j < list.size(); j++) { for (int k = 2; k < list.size(); k++) { if (list.get(i) - list.get(j) == list.get(j) - list.get(k) && list.get(i) != list.get(j)) { System.out.print(list.get(i) + "," + list.get(j) + "," + list.get(k) + " "); if (list.get(i) - list.get(j) < 0) { System.out.println("公差为:" + (-(list.get(i) - list.get(j)))); } else { System.out.println("公差为:" + (list.get(i) - list.get(j))); } } } } } }}
3.第100002个素数
public class text1 { /** * 第100002个素数 */ public static void main(String[] args) { int arr[] = new int[1500000]; int n = 1; for (int i = 2; i < 1500000; i++) { for (int j = i * 2; j < 1500000; j = j + i) { arr[j] = 1; } } for (int i = 2; i <= 100002; i++) { while (arr[n = n + 2] == 1) ; } System.out.println(n); }}
0 0
- 关于素数的简单算法整理
- 关于素数的算法
- 简单算法--素数算法
- java之简单的判断素数算法
- 关于无线网络的简单整理
- 关于素数的一些知识以及算法
- 素数筛法的常数优化简单整理
- 关于素数验证算法
- 关于随机数的一个简单的整理
- 关于AndroidStudio混淆配置,简单的整理
- 关于并发控制的简单整理
- 关于ActiveMQ的简单整理(1)
- 关于ActiveMQ的简单整理(2)
- 关于ActiveMQ的简单整理(3)
- 关于ActiveMQ的简单整理(4)
- 关于ActiveMQ的简单整理(5)
- 关于ActiveMQ的简单整理(6)
- 关于集合的简单整理总结
- AS配置文件+gradle配置+混淆配置
- BZOJ-1023 [SHOI2008]仙人掌图
- C/C++ "\t"的用法
- 关闭445端口
- 二分贪心04
- 关于素数的简单算法整理
- Quartz 2D编程指南(4) - 颜色和颜色空间
- C++对象模型
- python基础练习1
- VS2010+Qt4.8.6+Visual Assist X安装步骤
- 杭电毕业bg dfs
- GPS NMEA-0183协议详解
- 解决验证码不显示问题
- js获取当前位置的地理坐标(经纬度)