C语言编程,1到100,求质数,谁能帮帮我啊,网上找的,不完整,看不懂,毫无思路

如题所述

第1个回答  2015-12-21
#include <stdio.h>
#include <math.h>
int f(int n) 
{
 int i;
 //素数标准:只能被自己和1整除的数字
 for(i=2;i<=sqrt(n);i++)
 {
  //能被其他数整除,就不是素数
  if(n%i==0)
   return 0;
 }
 return 1;
}
int main()
{
 int i,k=0;
 printf("1至100之间的素数从小到大分别为:\n");
 for(i=2;i<=100;i++)
 {
  //依次判断所有数字是否为素数
  if(f(i))
  {
   k++;
   printf("%d\t",i);
  }
 }
 printf("\n总共%d个。\n",k );
 return 0;
}

第2个回答  2015-12-21
#include <stdio.h>

int main()
{
    int n;
    for( n=2;n<=100; n++ ) //遍历2-100,最小的质数是2,检查每个数是不是质数
    {
        int i;
        for( i=2;i<n;i++ ) //从2到n检查,有没有n的因数
        {
            if ( n%i==0 )
                break; //如果i是n的因数,提前结束循环,此时,i一定小于n
        }
        if ( i==n ) //没有因数,则i会等于n
            printf("%d ", n ); //输出该质数
    }
    return 0;
}

追问

只有你的运行成功

本回答被提问者和网友采纳
第3个回答  2015-12-21

质数是只能被1和它本身整除的数

#include <stdio.h>
int main()
{
    int i, j;
    for(i=2;i<=100;++0)
    {
        for(j=2;j*j<=i;++i){//j<=根号i
            if(i%j==0)break;//整除就跳出
        }
        if(j*j>i)printf("%d\n", i);//2-根号i中没有被i整除的数
    }
    return 0;
}

追问

不行

运行出错

追答#include <stdio.h>
int main()
{
    int i, j;
    for(i=2;i<=100;++i)
    {
        for(j=2;j*j<=i;++j){//j<=根号i
            if(i%j==0)break;//整除就跳出
        }
        if(j*j>i)printf("%d\n", i);//2-根号i中没有被i整除的数
    }
    return 0;
}

打快了,两个变量地方打错了

追问

可以运行,屏幕跳动的是死循环

追答

最多是100次循环,怎么会死循环呢,你肯定是哪里的变量抄错了

第4个回答  2015-12-21
#include<stdio.h>
int IsPrime(int n)
{
int i;
for(i=0;i<n/2;i++)
if(n%i==0)
return 0;
return 1;
}
int main()
{
int i;
printf("1-100中的质数有:\n");
for(i=1;i<=100;i++)
if(IsPrime(i))
printf("%3d",i);
printf("\n");
return 0;
}