the number variable starts at 2 and the check variable starts at 0. every iteration, the check variable is increased by 1 a set number of times (set by the checks per iteration variable) and then the following if-else statement is run: "is the check variable greater than the amount of prime numbers in the list?" if this comes back true, the value of the number variable is added to the list. then the number variable is increased by 1, and the check variable is reset to 0. if it comes back false, another check is made. "is the number variable divisible by the item in the list whose index is the same as the check variable?" if this comes back true, the number variable is increased by 1 and the check variable is set to 0, but the number is not added to the list. by looping this script, the list will contain every prime number up to the number it is checking. as for the other variables, the frames skipped is relative to scratch's base frame rate of 30 fps. the longer it takes for the screen to refresh, the more frames were skipped. the efficiency variable is checks per iteration divided by frames skipped (with some other modifications). the higher the efficiency number is, the faster the numbers are being determined prime or not. i may or may not be using this script in another project of mine.