永发信息网

C语言中求质数过程是怎样的

答案:2  悬赏:80  手机版
解决时间 2021-04-02 21:57
  • 提问者网友:浪荡绅士
  • 2021-04-02 05:18
C语言中求质数过程是怎样的
最佳答案
  • 五星知识达人网友:往事隔山水
  • 2021-04-02 05:42
设有数x、y,且想x^2=y;
又有a、b,a>b,a*b=y,那么a>x>b;故只找x底下的值即可知道y有没有因子;
    for(i=2;i<=50;i++)
    {
        for(n=2;n<=(int)sqrt(i);n++)
            if(i%n==0)            //如果n是i的因子即退出
            break;
        if(n==(int)sqrt(i)+1)        //n==(int)sqrt(i)+1就是在上面循环没找到i的
                                        因子,即i是质数
            printf("%d ",i);
}
全部回答
  • 1楼网友:愁杀梦里人
  • 2021-04-02 05:47

判断一个数是不是素数(就是你说的质数),用下面的方法(筛选法):
从2开始,那么2的倍数就不是素数;
然后是3,那么3的倍数就不是素数;
然后是5(4已经被排除了),那么5的倍数就不是素数。
以此类推。下面给出筛选法的代码(判断10以内的素数有几个,4个)



但是你的那个不是用筛选法,你的是根据素数的定义:一个数,除了他本身和1,其他的数不是他的因子,那么这个数就是素数(1不是啊,从2开始算的)。


比如15不是素数,因为他的因子有1 3 5 15,
比如19是素数,因为他的因子只有1和19。
关于你的那个代码,我写了一个:
#include
int main(void)
{
    int i,s,k,count=0;
    for(i=100;i<=200;i++)
    {
        k=sqrt(i);
        for(s=2;s<=k;s++)
        {
            if(i%s==0)break;
        }
        if(s==k+1)
        count++;
    }
    printf("%d ",count);
    for(i=100;i<=200;i++)
    {
        k=sqrt(i);
        for(s=2;s<=k;s++)
        {
            if(i%s==0)break;
        }
        if(s==k+1)
        printf("%d ",i);
    }
    return 0;
}
 写的这么详细,不采纳我,好伤心。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯