Java 在素数数组中查找特定数

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 {

我试图在Java中找到具有特定条件的素数

挑战在于将包含“3”的所有素数(100.000以下)显示四次。 我已经有了一个显示100.000以下所有素数的代码,但我似乎不知道如何将包含数字“3”的素数数四次。 然而,我能数清所有的素数

有人能帮我吗

这是我的代码,我要把数字放到哪里

    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并使用提醒操作时,您可以得到数字的最后一位。现在用一个循环和计数器,你会没事的

另一个选项(非常难看,所以不要真正使用它:)-将数字转换为
字符串
,并对其字符进行迭代(循环)

希望这对你有帮助,祝你好运

  • 迭代每个素数
  • 对于每个素数,使用Integer.toString(int)静态方法将其转换为字符串
  • 使用此字符串,迭代每个字符(使用for循环和非静态方法string.charAt(int index))并计算该方法返回“3”的次数。(字符“3”,而不是字符串“3”)

  • 除非素数字符串数组有其他用途,否则不要麻烦将它们存储在循环之外的任何地方。

    请参考下面的代码来验证所有这些
    素数

    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))