계속 물 문 제 를 풀다 = | | 분해 소수 와 HDU 2098
소수 와 소 수 를 나누다.
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24635 Accepted Submission(s): 10727
Problem Description
하나의 우 수 를 두 개의 서로 다른 소수 의 합 으로 나 누 면 몇 가지 철거 법 이 있 습 니까?
Input
일부 정 수 를 포함 하 는 짝수 를 입력 하 십시오. 그 값 은 10000 을 초과 하지 않 고 개 수 는 500 을 초과 하지 않 으 며 0 을 만나면 끝 납 니 다.
Output
모든 짝수 에 대응 하여 출력 은 서로 다른 소수 로 나 누 어 지고 모든 결 과 는 한 줄 을 차지한다.
Sample Input
30
26
0
Sample Output
3
2
Source
2007 성 경기 합숙 훈련 팀 연습 경기 (2)
나의 방법: 두 개의 배열 을 열 고 하 나 는 소수 인지 아 닌 지 를 표시 하 는 데 사용 합 니 다. 다른 하 나 는 소수 에 접근 하 는 데 사 용 됩 니 다. ----다른 소 수 를 계산 하 는 데 쓰 인 다
코드:
#include <iostream>
#include <cstring>
#include <stdlib.h>
using namespace std;
bool primelist[10001];// false, true
int primes[5000];
int makePrimelist()
{
int i,j;
primelist[1] = true;
for(i = 4;i <= 10000;i+=2)
primelist[i] = true;
for(i = 3;i <= 100;i+=2)
{
if(!primelist[i])
for(j = i*i;j <=10000;j+=i)
primelist[j] = true;
}
j = 0;
for(i = 1;i <= 10000; i++)
if(!primelist[i])
primes[j++] = i;
return j;
}
int main()
{
int n,len,i;
int flag;
len = makePrimelist();
//for(i = 0;i <len;i++)
//cout << primes[i] << endl;//
while(cin >> n && n)
{
flag = 0;
for(i = 0;i < len;i++)
if(n - primes[i] > 0 && !primelist[n-primes[i]]) flag++;// n , (n- ) ,
cout << flag/2 << endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ACM - 계산 기하학 적 Pick - up sticks -- poj 2653Description Stan has n sticks of various length. The data for each case start with 1 <= n <= 100000, the number of stick...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.