c语言,输出1到1000的非素数

c语言,输出1到1000的非素数,第1张

我就站在你的角度写个程序吧

#include <stdioh>

#include <mathh>

int main()

{

int i,j,m;

for(i=1;i<=1000;i++)

{ m=0; /标记是否为素数 0代表为素数 1代表为非素数/

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

if(i%j==0) m=1; /符和条件 就m=1 /

if(m==1) /判断m=1 来决定是否输出结果/

printf("%d ",i);

}

}

不懂的可以用百度HI问 我目前在线

程序代码如下,仅供参考:

#include "stdioh"

main()

{ int a,i;

  for(a=1;a<=1000;a++)

   {

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

     {

      if(a%i!=0)

       continue;

      else  if(a==i) printf("%d is a prime\n  ",a);

      else  printf("%d is not a prime\n  ",a);

      break; 

      }

   }

}

void fun(int m,int k,int xx[])

int i,j,n=0;

for(i=4;i<m;i++)

for(j=2;j<i;j++) if(i%j==0) break;

if(j==i) xx[n++]=i;

}

所谓素数就是不能被不是1和它本身的任何数整除。

这个函数的作用是找出从4到m的所有素数,并添加到数组xx中

第一个外循环是确定一个需要判断的书,比如——6

第二个内循环是从2到5(j<i,i是6)。分别于6取余数,如果有一个余数为0的话,就是能被整除(6除以2,得3余0),不符合素数。就执行break,跳出内循环,继续外循环的下一个数——7

如果内循环从2到6,没有一个可以整除7的,然后把7赋给xx数组,然后n++指向数组的下一位。

注意:你这个函数似乎有点问题呢。怎么没人看得出来?

if(j<i) xx[n++]=i;

这里因改成if(j==i) xx[n++]=i;

因为当j等于i的时候说明j已经从2到i-1都尝试了一遍,而且没有跳出循环,也就是没有整除的,所以是素数。在给数组。

如果是if(j<i) 的话,当i为6,j为2的时候,跳出内循环——for(j=2;j<i;j++) if(i%j==)break;后,仍然会执行 if(j<i) xx[n++]=i;。这时j是2小于i——6因此判断成立,6给数组。但6不是素数。

#include <stdioh>

int main()

{

    int n,i=2;

    scanf("%d",&n);

    while(1)

    {

        if(n%i==0)

        {

            printf("%d",i);

            n/=i;

            if(n == 1) break;

            printf("");

        }

        else

            i++;

    }

    return 0;

}

判断一个整数m是否是素数,只需把m被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么m就是一个素数。思路1)的代码:

#include <stdioh>

int main(){

int a=0; // 素数的个数

int num=0; // 输入的整数

printf("输入一个整数:");

scanf("%d",&num);

for(int i=2;i<num;i++){if(num%i==0){a++; // 素数个数加1}}

if(a==0){printf("%d是素数。\n", num);}else{printf("%d不是素数。\n", num);}return 0;}

判断方法还可以简化。m不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~ 之间的每一个整数去除就可以了。如果m不能被 2 ~ 间任一整数整除,m必定是素数。例如判别17是是否为素数,只需使17被2~4之间的每一个整数去除,由于都不能整除,可以判定17是素数。思路2)的代码:

#include <stdioh>

#include <mathh>

void main(){int m; // 输入的整数 

int i; // 循环次数

int k; // m 的平方根 

printf("输入一个整数:");

scanf("%d",&m);

// 求平方根,注意sqrt()的参数为 double 类型,这里要强制转换m的类型 

k=(int)sqrt( (double)m );

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

if(m%i==0)

break;

// 如果完成所有循环,那么m为素数

// 注意最后一次循环,会执行i++,此时 i=k+1,所以有i>k 

if(i>k)

printf("%d是素数。\n",m);

else

printf("%d不是素数。\n",m);

return 0;}

判断一个数是否是素数

#include "mathh"

int su(long x)

{

int i;

if(x%2==0) return 0;

else

for(i=3;i<sqrt(x);i+=2)

if(x%i==0) return 0;

return 1;

}

判断素数,若是就返回1,否则就返回0,先看能不能被2整出,若整除肯定不是素数,如不整除就看它能不能被3,5,7,9。。。一直到sprt(x),整除。若整除就不是素数

# include <stdioh>

int isPrime(int l)

{

int i;

for(i=2;ii<=l;i++)

{

if(l%i==0)

{

return 0; //is not a prime

}

}

return 1; // is a prime

}

void main()

{

int count=0;

int i;

int sum=0;

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

{

if(!isPrime(i))

{

printf("%d ",i);

count++;

sum+=i;

}

}

printf("\n");

printf("count is %d\n",count);

printf("sum is %d\n",sum);

}

包含求和以及不时素数的总个数

以上就是关于c语言,输出1到1000的非素数全部的内容,包括:c语言,输出1到1000的非素数、求个c语言程序求出1~1000之间的所有非素数、、求解关于C语言求非素数问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9304453.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存