"BOJ 2581 소수"의 두 판 사이의 차이

 
(사용자 2명의 중간 판 9개는 보이지 않습니다)
1번째 줄: 1번째 줄:
[[분류: BOJ 10단계]]
[[분류: 소수]]
{{DEFAULTSORT:2}}
==개요==
==개요==
* {{BOJ|2581}}
{{BOJ|단계=9}}
* https://www.acmicpc.net/category/detail/368
* https://www.acmicpc.net/category/detail/368
* 소수 판별법을 연습해 봅니다
* 소수 판별법을 연습해 봅니다
==C++==
<syntaxhighlight lang='cpp'>
#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);
}
</syntaxhighlight>
<syntaxhighlight lang='cpp'>
#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);
}
</syntaxhighlight>


==Java==
==Java==
<source lang='java'>
<syntaxhighlight lang='java'>
import java.util.Scanner;
import java.util.Scanner;
public class Main {
public class Main {
38번째 줄: 107번째 줄:
     }
     }
}
}
</source>
</syntaxhighlight>
 
==PHP==
<syntaxhighlight lang='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;
</syntaxhighlight>
 
==Python==
<syntaxhighlight lang='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 )
</syntaxhighlight>


==같이 보기==
==같이 보기==

2023년 8월 27일 (일) 11:34 기준 최신판

1 개요[ | ]

BOJ 2581 소수

2 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);
}

3 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);
    }
}

4 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;

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

6 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}