解题思路以及注意事项:
打表法,大家要学会用这种奇异的方法来解这一题,不然怎么凸显我们的逼格呢?
对1到1000进行遍历,让所有的非素数为1,素数为0,然后我们需要看一个数是
不是素数的时候就简单了,只需要看看数组里那个位置存的是0还是1就可以了。
2是素数,则4不是素数,6不是,后面就是偶数了(判断所以能被2整除的数),
i+1为3,j=6不是,6+3,不是(所以3 的倍数的全不是素数),就是这样类似的方
法就可以让数组质数的位置里面存1。
实例代码:
#include"stdio.h" //打表法 #include"math.h" void prime(); int a[1000]={0}; //定义全局的数组a[1000],也可以定义到main()里面,不过那样需要传参 int main() //不要定义到prime里面,prime()调用完毕所有的数据将不可知 { int i,number,check=0; prime(); scanf("%d",&number); if(a[number]==0) { printf("prime\n"); } else { printf("not prime\n"); } return 0; } void prime() { int i=2,j; for(i=2;i<1000;i++)/ for(j=i+i;j<1000;j+=i) { a[j]=1; //让这些数(不是素数)全部为1,其余为0; } }
大家还有什么不懂的就请到下面评论区留言,小方会为大家解答
0.0分
0 人评分
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:629 |
简单的a+b (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码) 用函数传参的方法浏览:4015 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1021 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)浏览:498 |
C语言训练-自由落体问题 (C语言代码)浏览:1697 |
简单的a+b (C语言代码)浏览:543 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1199 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:645 |
DNA (C语言代码)浏览:534 |
q330226 2018-01-03 19:33:53 |
提示编译错误