急求一个随机产生一个大素数的代码,要求产生的素数的位数可以手动输入来确定,回答好的加50分,决不食言
3个回答
展开全部
//大素数是什么意思?
import java.util.Random;
import java.util.Scanner;
public class Test {
// 判断是否是素数
public static boolean isPrime(int m) {
boolean f = true;
for (int i = 2; i < m / 2; i++) {
if (m % i == 0) {
f = false;
break;
}
}
return f;
}
public static void main(String[] args) {
System.out.print("请输入素数的位数并按回车键:");
Scanner s = new Scanner(System.in);
int cou = s.nextInt();
int form = (int) Math.pow(10, (cou - 1));
int to = (int) Math.pow(10, cou);
// 查出所有素数,最多一百个
int[] a = new int[100];
for (int i = 0; i < a.length; i++) {
a[i] = 0;
}
int sum = 0;
for (int i = form; i < to; i++) {
if (isPrime(i)) {
if (sum < 100) {// 最多100个
a[sum] = i;
sum++;
}
}
}
System.out.println("产生的随机" + cou + "位素数为:"
+ a[new Random().nextInt(sum)]);
}
}
import java.util.Random;
import java.util.Scanner;
public class Test {
// 判断是否是素数
public static boolean isPrime(int m) {
boolean f = true;
for (int i = 2; i < m / 2; i++) {
if (m % i == 0) {
f = false;
break;
}
}
return f;
}
public static void main(String[] args) {
System.out.print("请输入素数的位数并按回车键:");
Scanner s = new Scanner(System.in);
int cou = s.nextInt();
int form = (int) Math.pow(10, (cou - 1));
int to = (int) Math.pow(10, cou);
// 查出所有素数,最多一百个
int[] a = new int[100];
for (int i = 0; i < a.length; i++) {
a[i] = 0;
}
int sum = 0;
for (int i = form; i < to; i++) {
if (isPrime(i)) {
if (sum < 100) {// 最多100个
a[sum] = i;
sum++;
}
}
}
System.out.println("产生的随机" + cou + "位素数为:"
+ a[new Random().nextInt(sum)]);
}
}
更多追问追答
追问
大素数就是位数达到50位或者更大的素数,每次运行只需要随机产生一个就行了,哥么你上面的代码太简单了,这个是最基础最慢的算法了
追答
姐们,你早说啊!浪费我时间……
另外一个周之内我要不再回复你,就说明我水平就这般了……你也别等我答案了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很麻烦啊,如果是位数特别多的话判断是不是质数就要好长时间。有个方法:可以随机产生素数的每一位数,然后拼接起来,到网上搜个大素数判定算法就好了。但是大素数的确定是很困难的,比较快的办法通常也不稳定。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是用什么语言写呢?
追问
C或者C++都行,大素数就是位数为50位或者更大的素数,拜托了,速度啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询