C代码和python代码:利用数组求前n个质数

目录

    • 一、总结
    • 二、C代码
    • 三、Python代码

一、总结

一直提示出错,
直到发现我把 primes[pc++] = m 中的 pc++ 放错位置了
因为 python 没有 pc++
就被我写成 pc = pc+1然后放到 primes[pc] = m 前了
有点傻,pc++ 是先使用后增加的,
后面改了就对了

二、C代码

运行环境:VS2017
以下是代码:

#include<stdio.h>
#define N 50
int main()
{
	int primes[N];
	int pc, m, k;

	printf("\n The first %d prime numbers are:\n", N);
	primes[0] = 2;/*2是第一个质数*/
	pc = 1;/*已有第一个质数*/
	m = 3;/*被测试的数从3开始*/
	while (pc < N)
	{
		/*调整m使它为下一个质数*/
		k = 0;
		while (primes[k] * primes[k] <= m)
			if ( m % primes[k] == 0)
			{/*m是合数*/
				m += 2;/*让m取下一个奇数*/
				k = 1;/*不必用primes[0]=2去测试m,所以k从一开始*/
			}
			else
				k++;/*继续用下一个质数去测试*/
		primes[pc++] = m;
		m += 2;/*除2外,其余质数均是奇数*/
	}
	/*输出primes[0]至primes[pc-1]*/
	for (k = 0; k < pc; k++)
		printf("%4d", primes[k]);
	printf("\n\n Press any key to quit...\n ");
	getchar();
	getchar();
	return 0;
}

三、Python代码

运行环境:Pycharm,python3.74
以下是代码:

N = 50

def main():
	primes = [0 for i in range(N)]

	print("The first ", N, " prime numbers are:")
	primes[0] = 2  #2是第一个质数
	pc = 1  #已有第一个质数
	m = 3  #被测试的数从3开始
	#调整m使它为下一个质数
	while pc < N:
		k = 0
		while primes[k] * primes[k] <= m:
			if m % primes[k] == 0:  #m是合数
				m = m+2  #让m取下一个奇数
				k = 1  #不必用primes[0]=2去测试m,所以k从1开始
			else:
				k = k+1  #继续用下一个质数去测试
		primes[pc] = m
		pc = pc+1
		m = m+2  #除2外,其余质数均是奇数

	#输出primes[0]至primes[pc-1]
	for i in range(0, pc):
		print(primes[i])
	print(" Press any key to quit...")


main()

你可能感兴趣的:(C代码和python代码:利用数组求前n个质数)