I'm looking to optimize a simple sum calculator used in Project Euler+. The premise is simple: Find the sum of all the numbers divisible by 3 or 5 under X.

At first I did it like so:

    def main(testCases):
        final_answer = []
        for x in range(testCases):
            answer = 0
            test = long(input())
            for num in range(test):
                if (num % 5 == 0 or num % 3 == 0):
                    print(num)
                    answer += num
            final_answer.append(str(answer))
        print('\n'.join(final_answer))
    main(input())
    
Which worked alright. Then I realized it couldn't handle anything like 10,000,000,000 at all, which was bad, so I tried:

    def main(testCases):
        for x in range(testCases):
            answer = 0
            num = input()
            
            Temp = (num - 1) // 3
            answer += (Temp * (3 + Temp * 3)) // 2
            Temp = (num - 1) // 5
            answer += (Temp * (5 + Temp * 5)) // 2
            Temp = (num - 1) // 15
            answer -= (Temp * (15 + Temp * 15)) // 2
            print answer
    main(input())

Which was way faster / capable of giant numbers. However, it seems really ugly and unoptimized, but maybe it's in my head. Can anyone help me optimize my answer?

Sample

Input:

    2
    10
    100
    
Output:

    23
    2318