要求素数,首先我们要知道什么是素数,在解题的时候,不要急着去寻找方法解题,而是要先了解它的根本,才可以在遇到类似题的时候轻松面对解决

质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。

程序如下:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i;

for (i = 100; i <= 200; i++)   //也可自行设定数值范围

{

int j = 0;

for (j = 2; j <= i - 1; j++)

{

if (i%j == 0)

{

break;

}          //如果i%j=0说明i可以整除j,则跳出if语句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

结果如下:

wKioL1agaOiTj2jzAAAVqokjaIw433.png

优化方案一:

int main()

{

int i;

for (i = 101; i <= 200; i+=2)  //由于100不是素数,所以可以从101开始

{

int j = 0;

for (j = 2; j <= i - 1; j++)

{

if (i%j == 0)

{

break;

}          //如果i%j=0说明i可以整除j,则跳出if语句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

优化方案二:

int main()

{

int i;

for (i = 101; i <= 200; i+=2)  //由于100不是素数,所以可以从101开始

{

int j = 0;

for (j = 3; j <= i - 1; j++)

{

if (i%j == 0)

{

break;

}          //如果i%j=0说明i可以整除j,则跳出if语句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

优化方案三:

int main()

{

int i;

for (i = 101; i <= 200; i+=2)  //由于100不是素数,所以可以从101开始

{

int j = 0;

for (j = 3; j <= i - 1; j+=2)

{

if (i%j == 0)

{

break;

}          //如果i%j=0说明i可以整除j,则跳出if语句

}

if (i == j)

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}

优化方案四:

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main()

{

int i;

for (i = 101; i <= 200; i+=2)   //由于100不是素数,所以可以从101开始

{

int j = 0;

for (j = 3; j <= sqrt(i); j+=2)

{

if (i%j == 0)

{

break;

}          //如果i%j=0说明i可以整除j,则跳出if语句

}

if (j>sqrt(i))

{

printf("%d  ", i);

}        

}

system("pause");

return 0;

}



写程序最原始的目的可能是解决某个题或者某个实际问题,但是,当以后我们进入社会,你要解决的就全部都是实际问题,那时候你面对的可能不仅仅只是解决它,而是要不断的优化它,要让成本更低,时间更短,效率更高,而这种优化解决问题的思路,要从写小程序开始培养。