개요
- BOJ 2581 소수
C++
#include <iostream>
using namespace std;
bool isPrime(int n) {
if(n<2) return false;
for(int i=2; i<=n/2; i++) {
if(n%i==0) return false;
}
return true;
}
void showPrimeInfo(int m, int n) {
int min = -1;
int sum = 0;
for(int i=m; i<=n; i++) {
if(isPrime(i)) {
if(min == -1) min = i;
sum += i;
}
}
if( sum == 0 ) {
cout << "-1\n";
return;
}
cout << sum << '\n';
cout << min << '\n';
}
int main() {
int M, N;
cin >> M >> N;
showPrimeInfo(M, N);
}
#include <iostream>
using namespace std;
bool isPrime(int n) {
if( n < 2 ) return false;
if( n < 4 ) return true;
if( n%2==0 || n%3==0 ) return false;
for(int i=5; i*i<=n; i+=6 ) if(n%i==0 || n%(i+2)==0) return false;
return true;
}
void showPrimeInfo(int m, int n) {
int min = -1;
int sum = 0;
for(int i=m; i<=n; i++) {
if(isPrime(i)) {
if(min == -1) min = i;
sum += i;
}
}
if( sum == 0 ) {
cout << "-1\n";
return;
}
cout << sum << '\n';
cout << min << '\n';
}
int main() {
int M, N;
cin >> M >> N;
showPrimeInfo(M, N);
}
Java
import java.util.Scanner;
public class Main {
static boolean is_prime(int n) {
if( n < 2 ) return false;
if( n < 4 ) return true;
if( n%2==0 || n%3==0 ) return false;
for(int i=5; i*i<=n; i+=6 ) if(n%i==0 || n%(i+2)==0) return false;
return true;
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt();
int sum = 0;
int min = -1;
for(int i=N; i>=M; i--) {
if( is_prime(i) ) {
sum += i;
min = i;
}
}
if( sum == 0 ) {
System.out.println( -1 );
return;
}
System.out.println(sum);
System.out.println(min);
}
}
PHP
<?php
function is_prime($n) {
if( $n<2 ) return false;
for($i=2; $i<=sqrt($n); $i++) if($n%$i == 0) return false;
return true;
}
$M = intval(fgets(STDIN));
$N = intval(fgets(STDIN));
$min = 10000;
$sum = 0;
for($i=$N; $i>=$M; $i--) {
if(is_prime($i)) {
$sum += $i;
$min = $i;
}
}
if( $sum == 0 ) {
echo -1;
exit;
}
echo $sum ."\n" . $min;
Python
def is_prime(x):
import math
if x<2: return False
for i in range(2,int(math.sqrt(x))+1):
if x%i==0: return False
return True
M = int(input())
N = int(input())
sm = 0
mn = 10000
for i in range(N, M-1, -1):
if(is_prime(i)):
sm += i
mn = i
if sm==0:
print( -1 )
else:
print( sm )
print( mn )
같이 보기