用c语言编写程序输出1-100内的素数

用c语言编写程序输出1-100内的素数,第1张

用常规的判素性方法可如下实现
#include "stdioh"
#include "mathh"
bool IsPrime(int x)
{
int i, s;
s = sqrt(x + 1);
for(i = 2; i <= s; i++)
if(x % i == 0) return false;
return true;
}
void main( )
{
int i;
for(i = 2; i < 100; i++)
if(IsPrime(i))
printf("%d ", i);
}
也可采用筛选法,筛选法效率会高一些,楼上的虽然也是筛选法,但他的效率却并不高。筛选法的思路是将那些非素数筛掉,留下那些素数。命题“对于1<x<100的合数x, 必含有小于10的质因子”可以证明是真命题,它的逆反命题“对于1<x<100的数,如果不含有小于10的质因子,则它必为素数。”则也是真命题。因此筛除时,只要筛除含有10以内的质因子的数就可以了。下面给出筛选法的代码。
#include "stdioh"
void main( )
{
bool isprime[100];
int i, j;
isprime[0] = false;
isprime[1] = false;
for(i = 2; i < 100; i++) /先初始化2~100的都是素数,然后将非素数筛除掉/
isprime[i] = true;
for(i = 2; i < 10; i++) /将所有含有小于10的质因子的数筛除掉/
{
if(isprime[i]) /如果i是素数,则将它的倍数全部筛掉/
for(j = i i; j < 100; j += i) /从ii开始检测是因为小于ii的合数都被小于i的素数筛除了/
isprime[j] = false;
}
for(i = 2; i < 100; i++)
if(isprime[i])
printf("%d ", i);
}

主要考察素数的概念和判断方法。

素数:指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。

素数判断:将该数N用小于等于根号N的所有素数去试除,若均无法整除,N则为素数。

参考代码:

#include<stdioh>
#include<mathh>
int main()
{
    int a,b,c;
    printf("2\n");//2是素数,不能利用上面的规则求出需要另外输出。
    for(a=2;a<=100;a++)
    {
        c = (int)sqrt(a);//计算平方数,取整
        for(b=2;b<=c;b++)//依次判断
            if(a%b==0) break;
        if(b>c) printf("%d\n",a);//输出素数
    }
    return 0;
}

#include<stdioh>

//输出100之内的所有素数

int main()

{

int i;

int j;

int flag = 1;

for(i = 2;i <= 100;i++)

{

for(j = 2;j <= i / 2;j++)

{

if(i % j ==0)

{

flag = 0;

break;

}

}

if(flag == 1)

{

printf("%d\n",i);

}

flag = 1;

}

return 0;

}

扩展资料

#include <stdioh>

int main()

{

int a;

for (int i = 2; i < 100; i++)

{

int a = 0;

/ code /

for (int j = 2; j < i; j++)

{

/ code /

if (i % j == 0)

{

/ code /

a++;

}

}

if (a == 0)

{

/ code /

printf("%d is sushu\n", i);

}

else

{

/ code /

printf("%d is not sushu\n", i);

}

}
return 0;

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13154488.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-12
下一篇 2023-06-12

发表评论

登录后才能评论

评论列表(0条)

保存