Java 在素数数组中查找特定数
我试图在Java中找到具有特定条件的素数 挑战在于将包含“3”的所有素数(100.000以下)显示四次。 我已经有了一个显示100.000以下所有素数的代码,但我似乎不知道如何将包含数字“3”的素数数四次。 然而,我能数清所有的素数 有人能帮我吗 这是我的代码,我要把数字放到哪里Java 在素数数组中查找特定数,java,arrays,primes,Java,Arrays,Primes,我试图在Java中找到具有特定条件的素数 挑战在于将包含“3”的所有素数(100.000以下)显示四次。 我已经有了一个显示100.000以下所有素数的代码,但我似乎不知道如何将包含数字“3”的素数数四次。 然而,我能数清所有的素数 有人能帮我吗 这是我的代码,我要把数字放到哪里 package Proeftentamen; import java.util.regex.*; /** * * @author Stefan */ public class Vraag_6 {
package Proeftentamen;
import java.util.regex.*;
/**
*
* @author Stefan
*/
public class Vraag_6 {
/// priemgetallen waar 4x een 3 in voor komt???? wtf...
public static void main(String[] args) {
boolean[] lijst = new boolean[1000000]; // hoeveelheid getallen
vularray(lijst);
lijst = zeef(lijst);
drukaf(lijst);
}
public static void vularray(boolean[] lijst) {
for (int i = 2; i < lijst.length; i++) {
lijst[i] = true;
}
}
public static boolean[] zeef(boolean[] lijst) {
for (int i = 2; i < lijst.length / 2; i++) {
if (lijst[i]) {
for (int j = 2 * i; j < lijst.length; j += i) {
lijst[j] = false;
}
}
}
return lijst;
}
public static void drukaf(boolean[] lijst) {
int count = 0;
for (int i = 2; i < lijst.length; i++) {
if (lijst[i] == true) {
System.out.println(i + " " + lijst[i]);
count++;
}
}
System.out.println("Aantal priemgetallen: " + count);
}
}
package Proeftentamen;
导入java.util.regex.*;
/**
*
*@作者Stefan
*/
公共级Vraag_6{
///priemgetallen waar 4x een 3在voor komt???wtf。。。
公共静态void main(字符串[]args){
boolean[]lijst=new boolean[1000000];//hoeveelheid getallen
vularray(lijst);
lijst=zeef(lijst);
德鲁卡夫(利吉斯特);
}
公共静态数组(布尔值[]lijst){
对于(int i=2;i
这个问题听起来像是一个家庭作业,所以你应该写下你想到了什么以及你迄今为止尝试了什么
数数的方法有很多。为了给您一个提示,您可以使用提醒操作(在Java-%
中):
因此,当您除以10并使用提醒操作时,您可以得到数字的最后一位。现在用一个循环和计数器,你会没事的
另一个选项(非常难看,所以不要真正使用它:)-将数字转换为字符串
,并对其字符进行迭代(循环)
希望这对你有帮助,祝你好运
除非素数字符串数组有其他用途,否则不要麻烦将它们存储在循环之外的任何地方。请参考下面的代码来验证所有这些
素数
void getPrimes(int num ,int frequency,char digit) {
int count = 0;
String number=Integer.toString(num);
for (int i = 0; i < number.length(); i++) {
if (count < frequency) {
if (number.charAt(i) == digit)
count++;
}
if (count == frequency)
{
System.out.println(number);
return ;
}
}
}
void getPrimes(整数、整数频率、字符位数){
整数计数=0;
字符串编号=整数。toString(num);
对于(int i=0;i
此代码生成50个数字排列,其数字中有四个“3”
所以检查每个数是否为素数
public void generateNumbers() {
StringBuilder s = new StringBuilder();
s.append("3333");
for (int i = 0; i < 5; i++) {
for (int j = 0; j <= 9; j++) {
if (j%3==0) continue;
s.insert(i,String.valueOf(j));
int number=Integer.parseInt(s.toString());
System.out.println(number);
s.delete(i,i+1);
}
}
}
public void generateNumbers(){
StringBuilder s=新的StringBuilder();
s、 附加(“3333”);
对于(int i=0;i<5;i++){
对于(int j=0;j,使用上的练习中的primes
函数以及中的and函数,此方案表达式可找到七种解决方案:
(filter
(lambda (n)
(= (length
(filter
(lambda (d) (= d 3))
(digits n)))
4))
(primes 100000))
外部筛选器运行所有小于100000的素数,并对每个素数应用外部lambda测试。内部筛选器计算每个素数的位数并仅保留3,然后长度函数对其进行计数,相等谓词仅保留那些具有4个3的素数。您可以运行程序并在上查看解决方案。最多只有五个数字,其中四个必须是3。那么你能对剩下的数字说些什么呢
手工写出结果数字,然后测试每一个数字的素性并不难。因为要测试的数字不超过50个,即使是最简单的按赔率除法也可以
但是,如果您想以编程方式生成数字,只需使用5个循环即可:将10000
添加到03333
9次;将1000
添加到30333
9次;将100
添加到33033
9次;等等。在C++中:
int结果[50];
int n_res=0;
INTA[5]={1333331333333331333331};
对于(int i=0,d=10000;我想展示一下代码吗?如果这是作业,你应该给它贴上这样的标签,但是到目前为止你做了什么?提示:如何确定一个字符串包含4个3?你可以在这里找到一些有用的方法:…如果你把它转换成一个“字符串”…你也可以使用正则表达式来计算“3”的数量…没有循环那么难看…Thanks,我现在正在研究正则表达式选项。我以前从未使用过它,所以有点困难。如果(j%3==0)继续;
不是45,j%3==0
对于j=0,3,6,9
是正确的,每个位置留有六位数字,6*5=30
数字以检查素性。是的,我编辑了代码,删除了代码中的(12+j)%3==0,因为数字%3==0的和等于j%3==0
(filter
(lambda (n)
(= (length
(filter
(lambda (d) (= d 3))
(digits n)))
4))
(primes 100000))