用筛选法求100之内的素数C语言 以及每一步的意思 主要是意思

如题所述

#include<stdio.h>
int isSushu(int n) //判断n是不是素数的函数,是素数返回1,不是则返回0
{
int i;
for(i=2;i<n;i++) //判断2..n-1中有没有n的约数(其实这边是根号n就行)
{
if(n%i==0) //i能被n整除,说明n除1和本身外还有其他约数,所以不是素数
{
return 0; //返回0,说明不是素数
}
}
return 1; //说明n除1和本身外没有其他约数,所以是素数
}
void main()
{
int i;
for(i=1;i<=100;i++) //1..100一个一个筛选
{
if(isSushu(i)) //如果返回值是1,则该数是素数,输出
printf("%d\n",i);
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-18
#include <stdio.h>
#include <math.h>
int prime(int n)
{
int i, t;
t = (int)sqrt(n); //求其平方根
for(i=2; i<=t; i++) //若被从2到平方根之间任意的一个数整除,则不是素数
{
if(n%i==0)
{
return 0;
}
}
return 1; //否则是素数
}
int main()
{
int i=2;
while(i<=100)
{
if(prime(i)==1)//根据函数返回值判断i是不是素数
{
printf("%d\n", i);
}
i++;
}
return 0;
}

本回答被提问者采纳
第2个回答  2021-03-08
百度筛选法可知道算法,除去1,排除 2 3 5 7 的倍数,剩下的就是素数,代码如下:
#include <stdio.h>
main(){
int a[100],i;
for(i=1;i<101;i++) a[i-1] = i; 将数组赋值

a[0] = 0; //首先排除 1
for(i=0;i<100;i++){
if(a[i] != 2 && a[i]%2==0) a[i] = 0; //除2以外,排除以2为倍数
if(a[i] != 3 && a[i]%3==0) a[i] = 0;
if(a[i] != 5 && a[i]%5==0) a[i] = 0;
if(a[i] != 7 && a[i]%7==0) a[i] = 0;
}
for(i=0;i<100;i++){
if(a[i]!=0) printf("%d ",a[i]);
}
return 0;
}
相似回答