Mister-小方


私信TA

用户名:1104986125

访问量:250420

签 名:

如此英俊为哪般

等  级
排  名 4
经  验 37264
参赛次数 1
文章发表 68
年  龄 19
在职情况 学生
学  校 大连交通大学
专  业 车辆工程

  自我简介:

解题思路以及注意事项:

  1. 打表法,大家要学会用这种奇异的方法来解这一题,不然怎么凸显我们的逼格呢?

  2. 对1到1000进行遍历,让所有的非素数为1,素数为0,然后我们需要看一个数是

    不是素数的时候就简单了,只需要看看数组里那个位置存的是0还是1就可以了。

  3. 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 人评分

  评论区

26行错了,多了一个/,报错了
2018-01-03 19:33:29
666,不过好像输入1时不对
2017-12-09 23:40:34
666
2017-09-21 16:02:05
好像称呼上有点错误,质数就是素数,你想表达的是素数存0,非素数存1吧
2017-06-23 10:15:38
  • «
  • 1
  • »