Algorithm Problems

에라토스테네스의 체 - pygame으로 설명

WakaraNai 2021. 2. 4. 18:20
728x90
반응형

import pygame
import time

BLACK= (0,0,0)
WHITE= (255,255,255)
GREEN= (0,255,0)

pygame.init()
size  = [500,600]
screen= pygame.display.set_mode(size)
pygame.display.set_caption("Primes")# 타이틀
numFont = pygame.font.SysFont(None,30)
charFont = pygame.font.SysFont(None,50)


#primes under 100
number=1
for i in range(0,500,50):
    for j in range(0,500,50):
        pygame.draw.line(screen, WHITE, [0,i], [500,i],3)
        screen.blit(numFont.render(str(number),True,WHITE),(j+10,i+15))
        if number < 100**0.5 and (number in [2,3,5,7]):
            screen.blit(charFont.render("O",True,GREEN),(j+10,i+10))
        number += 1    
    pygame.draw.line(screen, WHITE, [i,0], [i,500],3)
pygame.draw.line(screen, WHITE, [0,500], [500,500],3)
screen.blit(numFont.render("Root of 100 = "+str(100**0.5)+" > 2,3,5,7",True,WHITE),(100,550))
pygame.display.flip()

#remove numbers not prime
for p in [2,3,5,7]:
    time.sleep(5)
    number=1
    for i in range(0,500,50):
        for j in range(0,500,50):
            if  (number != p and number % p == 0):
                screen.blit(charFont.render("X",True,(100+p*20,0,0)),(j+10,i+10))
            number+=1
    pygame.display.flip()
        

 

 

+) 백준으로 시도하고 싶다면

www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

 

728x90
반응형