An intra prediction method for intra predicting a pixel value at each pixel position within a current block included in an image, the method comprising: calculating (S11, S540) an integer slope based on a horizontal gradient and a vertical gradient between pixels within a block adjacent to a current block, the integer slope being common for all pixels of the current block and indicating an integer value of a slope; determining (S12, S570) a sub-pel position that is an intersection between (i) a line that has the calculated integer slope that passes through the pixel position within the current block and (ii) a boundary of a block adjacent to the current block; and predicting (S13, S580), for each of the pixel positions , the pixel value at the pixel position based on a pixel value interpolated in the sub-pel position determined for the pixel position , wherein in the calculating (S11, S540), the integer slope is obtained with reference to a division table stored in a memory, the division table indicating, for each predetermined value, a result of a division using a a-th power of 2 as a dividend, a being a positive integer, and the predetermined value as a divisor, wherein in the calculating (S11, S540), as a divisor, a value indicating one of the horizontal gradient and the vertical gradient is used, and wherein in the predicting (S13, S580), the pixel value interpolated in the sub-pel position is calculated based on a position of a pixel which is obtained by the integer slope being multiplied by a value of coordinate of x-axis or y axis of the pixel position and wherein the interpolated pixel value is scaled by d bits right shifting, d being a positive integer, wherein in the calculating (S11, S540), the one of the horizontal gradient and the vertical gradient not used as a divisor in the division table is scaled by a c-th power of 2, and the integer slope is calculated using the scaled gradient, c being a positive integer such that d = c + a. calculating (S11, S540) an integer slope based on a horizontal gradient and a vertical gradient between pixels within a block adjacent to a current block, the integer slope being common for all pixels of the current block and indicating an integer value of a slope; determining (S12, S570) a sub-pel position that is an intersection between (i) a line that has the calculated integer slope that passes through the pixel position within the current block and (ii) a boundary of a block adjacent to the current block; and predicting (S13, S580), for each of the pixel positions , the pixel value at the pixel position based on a pixel value interpolated in the sub-pel position determined for the pixel position , wherein in the calculating (S11, S540), the integer slope is obtained with reference to a division table stored in a memory, the division table indicating, for each predetermined value, a result of a division using a a-th power of 2 as a dividend, a being a positive integer, and the predetermined value as a divisor, wherein in the calculating (S11, S540), as a divisor, a value indicating one of the horizontal gradient and the vertical gradient is used, and wherein in the predicting (S13, S580), the pixel value interpolated in the sub-pel position is calculated based on a position of a pixel which is obtained by the integer slope being multiplied by a value of coordinate of x-axis or y axis of the pixel position and wherein the interpolated pixel value is scaled by d bits right shifting, d being a positive integer, wherein in the calculating (S11, S540), the one of the horizontal gradient and the vertical gradient not used as a divisor in the division table is scaled by a c-th power of 2, and the integer slope is calculated using the scaled gradient, c being a positive integer such that d = c + a. <EOS>