首页 > 试题广场 >

素数

[编程题]素数
  • 热度指数:22732 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。

输入描述:
输入有多组数据。
每组一行,输入n。


输出描述:
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
示例1

输入

100

输出

11 31 41 61 71
int max = new Scanner(System.in).nextInt();
        int sum = 0;
        flag:
        for (int i = 1; i < max; i += 10) {
            if (i == 1) {
                continue;
            }

            for (int j = 2; j <= Math.sqrt(i); j++) {
                if (i % j == 0) {
                    continue flag;
                }
            }
            sum++;
            System.out.print(i + " ");
        }

        if (sum == 0) {
            System.out.println(-1);
        }
    }

发表于 2022-08-23 20:43:45 回复(0)
Java 
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 2; i < n; i++) {
            boolean flag = true;
            for (int j = 2; j * j <= i; j++) {
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            }
            if (flag && String.valueOf(i).endsWith("1")) list.add(i);
        }
        if (list.isEmpty()) System.out.println(-1);
        else for (Integer i : list) System.out.print(i + " ");
    }
}


发表于 2020-03-18 15:18:23 回复(1)
import java.util.Scanner;
public class Main {
    public static boolean issushu(int m){
        boolean flag=true;
        for(int i=2;i<=Math.sqrt(m);i++){
            if(m%i==0){
            flag=false;
            break;
            }
        }
        return flag;
    }
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int count=0;
        StringBuffer sb=new StringBuffer();
        for(int i=10;i<n;i++){
            if(issushu(i)&&i%10==1){
                count++;
                sb.append(i);
                sb.append(" ");
            }
        }
        if(count==0){
            System.out.println(-1);
        }
        else{
            System.out.println(sb.toString().trim());
        }
    }
}

发表于 2018-10-27 14:11:25 回复(0)

运行时间:42ms
占用内存:10964k
假设本次循环判断的数是i
如何判断i是不是素数,并且个位数是1。
默许i已经是素数了(对,少放屁!判断是不是素数大家都会),判断i个位数是1,鄙人给出了两种方法:
①if (i % 10 == 1) {}
②if (String.valueOf(i).endsWith("1")) {}
都AC的code:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int n = scan.nextInt();
            //新建ArrayList保存结果
            List<Integer> list = new ArrayList<>();
            // 找到2到n之间的个位是1的素数 并往ArrayList中逐个添加
            for (int i = 2; i < n; i++) {
                if (judgePrimeNumber(i)) {
                    // if (i % 10 == 1) {//这里的判断条件可以有其他形式
                    if (String.valueOf(i).endsWith("1")) {
                        list.add(i);
                    }
                }
            }
            // 因为输出的最后一个整数后面不能有空格 
            // 我采用了将数据保存到ArrayList中最后方便输出这种做法 
            // 当然做法还有其他
            for (int i = 0; i < list.size() - 1; i++) {
                System.out.print(list.get(i) + " ");
            }
            System.out.println(list.get(list.size() - 1));
        }
    }
    /**
     * 判断该次循环的数是否是素数 基本功了
     **/
    private static boolean judgePrimeNumber(int n) {
        // TODO Auto-generated method stub
        for (int i = 2; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
编辑于 2018-05-12 13:04:55 回复(0)
import java.util.*;
public class Main{
    public static boolean Out(int a){
        for(int i=2;i<a;i++ ){
            if(a%i==0){
                return false;
            }
            
        }
        return true;
        
    }
    public static  void main(String[] args){
        Scanner in =new Scanner(System.in);
        while(in.hasNext()){
          int n=in.nextInt();
            String s="";
            for(int i=11;i<n;i+=10){
                if(Out(i)){
                    s+=i+" ";
                }
            }
            System.out.println(s.trim());
            
            
        }
        
    }
    
}

发表于 2017-04-04 21:45:25 回复(0)

问题信息

难度:
5条回答 10877浏览

热门推荐

通过挑战的用户

查看代码
素数