首页 > 试题广场 >

小红的合数寻找

[编程题]小红的合数寻找
  • 热度指数:6152 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1024M,其他语言2048M
  • 算法知识视频讲解
\hspace{15pt}小红拿到了一个正整数 x,她希望你在 [x, 2 \times x] 区间内找到一个合数,你能帮帮她吗?

\hspace{15pt}一个数为合数,当且仅当这个数是大于 1 的整数,并且不是质数。

输入描述:
\hspace{15pt}在一行上输入一个正整数 x \left(1 \leqq x \leqq 100\right)


输出描述:
\hspace{15pt}如果范围内不存在符合条件的合数,则输出 -1。否则,输出一个正整数代表答案。
\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

1

输出

-1

说明

\hspace{15pt}在这个样例中,我们需要在 [1, 2] 区间内找到一个合数。根据定义,1 不是合数,2 是质数,所以范围内不存在合数。
示例2

输入

5

输出

8

说明

\hspace{15pt}在这个样例中,我们需要在 [5, 10] 区间内找到一个合数。根据定义,6,8,10 均是合数,所以输出任意一个均为正确答案。

完整版

# 判断是否为质数
def is_prime(num: int):
    for i in range(2, int(num**0.5)+1):
        if num % i == 0:
            return False
    return True

x = int(input())

for i in range(x, 2*x+1):
    if i == 1: print(-1)
    else:
        if not is_prime(i):
            print(i)
            break


发表于 2025-06-24 18:05:10 回复(0)
x = int(input())
print(-1) if x == 1 else print(2*x)

发表于 2025-05-27 14:40:10 回复(0)
x = int(input())
if x ==1:
    print("-1")
else:
    for i in range(x,2*x+1):
        if i%2 ==0 and i != 2:
            print(i)
            break

发表于 2025-02-28 14:59:21 回复(1)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
     public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int x = in.nextInt();
            ArrayList<Integer> list = new ArrayList<>();
            for (int i = 0; i <= x; i++) {
                list.add(x+i);
            }

            if (list.contains(1)){
                list.remove(1);
            }
            int count = 0;
            for (Integer i : list) {
                for (int j = 2; j < i; j++) {
                    if(i% j == 0){
                        System.out.println(i);
                        count = 1;
                        break;
                    }
                }
                if (count == 1){
                    break;
                }
            }
            if (count == 0){
                System.out.println("-1");
            }
        }
    }
}
发表于 2025-08-15 10:22:31 回复(0)
入门题,判断是否有非质数,判断x是否为质数判断x % i是否为0,为0则不是质数 。(i从2到i <= 2 / x)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int x = in.nextInt();
            int res = -1;
            if (x == 1) {
                System.out.println(-1);
            } else {
                for (int i = x; i <= 2 * x; i++) {
                    if (isValid(i)) {
                        res = i;
                        break;
                    }
                }
                System.out.println(res);
            }
        }
    }
    private static boolean isValid(int x) {
        for (int i = 2; i <= x / 2; i++) {
            if (x % i == 0) {
                return true;
            }
        }
        return false;
    }
}

发表于 2025-07-19 21:02:32 回复(0)
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
   const num = await readline()*1
   
   if(num === 1){
    console.log(-1)
   }
   if(num > 1){
    console.log(2*num)
   }
}()

发表于 2025-06-18 09:52:45 回复(0)
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let res = -1;
    function isComposition(num) {
        if (num <= 1) return false;

        for (let i = 2; i <= Math.sqrt(num); i++) {
            if (num % i === 0) {
                return true;
            }
        }
        return false;
    }
    while ((line = await readline())) {
        let tokens = line.split(" ");
        let a = parseInt(tokens[0]);

        if (a === 1) {
            console.log(-1);
            return false;
        }
        let _a =a
        while (a <= _a*2) {

            let isCompo = isComposition(a);
                // console.log(isCompo,a);
           
            if (isCompo) {
                res = a;
                console.log(res);
                return false;
            }
            a++
        }
        console.log(res);
    }
})();

发表于 2025-06-05 17:13:24 回复(0)
def is_prime(x):
    if x==1&nbs***bsp;x==2:
        return False
    for i in range(2,x):
        if x % i == 0:
            return True
    return False

def is_heshu(x):
    for i in range(x,2*x+1):
        if is_prime(i) and i>1:
            return i
    return -1

x=int(input())
print(is_heshu(x))

发表于 2025-06-04 15:38:17 回复(0)
逃课版:
x=int(input())
if x==1:
    print(-1)
else:
    print(2*x)


发表于 2025-05-21 22:26:24 回复(1)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //质数 只能被1和它本身整除。如2, 3, 5, 7, 11
        //合数 除了1和它本身外,还能被其他自然数整除。如4, 6, 8, 9, 10
       
            int x = in.nextInt();
            int rs=0;
            for(int i=x;i<=2*x;i++){
               
                if(i%2==0&&i!=2){
                    System.out.println(i);
                    rs=1;
                    break;
                   
                }
            }
            if( rs==0){
                System.out.println("-1");
            }
           
}
}
发表于 2025-04-18 14:31:19 回复(0)
x = int(input())

if x == 1:
    print(-1)
else:
    # 在[x, 2x]区间内,至少有一个合数,例如2x(当x >= 2时,2x >=4,一定是合数)
    print(2 * x)
发表于 2025-04-16 12:02:50 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x=in.nextInt();
        if(x>1){
            System.out.println(x*2);
        }else{
            System.out.println("-1");
        }
    }
}
发表于 2025-04-15 23:42:50 回复(0)
x = int(input())
res = -1
for i in range(x,2 * x + 1):
    if (i % 2 == 0 or i % 3 == 0 or i % 5 == 0) and i != 2 and i != 3 and i != 5:
        res = i
        break
    else:
        continue  
print(res)    

发表于 2025-04-15 11:09:25 回复(0)
#include <stdio.h>

int main() {
    int x;
    scanf("%d", &x);
    if(x==1)
        printf("-1");
    else
        printf("%d", 2*x);
        return 0;
}
发表于 2025-03-31 22:05:03 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
           
            System.out.println(getSumNum(a));
        }
    }
    public static int getSumNum(int num){
        if(num ==1){return -1;}
        if(num ==2){return 4;}
        for(int i=num ;i<=num*2;i++){

            for(int j = 2;j<i;j++){
                if(i%j==0){
                    return i;
                }
            }
        }

        return 0;
    }
}
发表于 2025-03-29 10:33:52 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            int x = in.nextInt();
            int result = -1;
            for (int i = x; i <= 2 * x; i++) {
                if (isOKNum(i)) {
                    result = i;
                    break;
                }
            }
            System.out.println(result);
        }
    }

    private static boolean isOKNum(int num) {
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                return true;
            }
        }
        return false;
    }
}
发表于 2025-03-26 13:01:29 回复(0)
#include <iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a;
    for(int i = a ; i <= 2 * a ; i ++){
        if(i != 1 && i != 2 && i % 2 == 0){
            cout << i << endl;
            return 0;
        }
    }
    cout << -1 << endl;
}
发表于 2025-03-16 21:46:54 回复(0)
x=int(input())
out=0
for i in range(x,2*x+1):
    for j in range(2,i):
        if i%j==0:
            out=i
            break
    if out!=0:
        print(out)
        break
    elif i==2*x:
        print(-1)
发表于 2025-03-02 15:29:29 回复(0)