c语言for循环求高手讲解一下下面这道题--输出100以内的素数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言for循环求高手讲解一下下面这道题--输出100以内的素数。相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
void main()
int i,n;
for(n=2;n<=100;n++)

for(i=2;n%i;i=i++);
if(i==n)
printf("%d",i);

putchar(' d\n');

for(n=2;n<=100;n++) // 用变量 n 遍历 2~100,找其中素数

for(i=2;n%i;i=i++); // 试图找出最小的变量 i 值,使得 n%i == 0,也就是 n 能被 i 整除,然后终止这个 for 循环。

if(i==n) // 判断通过上面的 for 循环找到的 i 值。如果 i 等于 n 本身,那么 n 就是素数。判断依据是:i 是除 1 以外,能整除 n 的最小整数;而这时 i 等于 n;也就是说 n 只能被 1 和它自己整除。这就是素数的定义,所以 n 就是素数。

printf("%d",i);

参考技术A #include<iostream.h>
void main()

    int i,j;
    for(i=2;i<=100;i++)
    
            int n=0;
for(j=1;j<=i;j++)//例如:i=5,j就从1~5开始让i整除,如果能整除,n就+1,最后,当j=5的时候,n==2,所以i是素数.你可以自己试试i=6的时候.

            if(i%j==0)//能整除
n++;

    if(n==2)//素数的定义:只有1和本身可以整除,所以n==2.


    

新鲜出炉,这样就好理解了.

参考技术B 我觉得 for(i=2;n%i;i=i++); 里边是不是应该是 n%i == 0 啊?

是这样的,素数定义:除过1和本身其他没有能够除尽(不包括2);
所以 从 2 开始循环,如果n%i 一直不为0 说明从2到 n-1 没有能除尽的,等到n%i == 0;
说明i已经加到 n了才被除尽,这时候 i== n ;那么n 就是素数!

如何用c语言双for循环输出下面图形??

(1)
*

***

*****

*******
(2)
*

***

*****

*******

对一个二维图形的输出,一般可以使用双重循环进行控制输出,其中外层循环控制输出的行数,内存循环输出每行的信息。

对于第1题,参考代码如下:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char*argv[])

   int i,j;
   int n=4;
   for(i=1;i<=n;i++)//控制输出n行
   
       for(j=0;j<2*i-1;j++) //第i行控制输出2*i-1个*
       
           printf("*");
       
       printf("\\n");
   
   system("pause");
   return 0;

编译后的运行结果如下:

对于第2题,参考源程序如下:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char*argv[])

   int i,j;
   int n=4;
   for(i=1;i<=n;i++)//控制输出n行
   
       //第i行输出n-i个空格
       for(j=0;j<n-i;j++)
       
           printf(" ");
       
       //第i行输出2*i-1个*
       for(j=0;j<2*i-1;j++)
       
           printf("*");
       
       printf("\\n");
   
   system("pause");
   return 0;

参考技术A #include<stdio.h>
void main()

int i,j;
for(i=1;i<=5;i++)

for(j=0;j<2*i-1;j++)

printf("*");

printf("\n");


没时间,只做了一个
参考技术B int lineNo;
int numCnt;

printf("\n");
for (lineNo = 1; lineNo<= 3; lineNo++)
for (numCnt= 1; numCnt<= (lineNo - 1) * 2 + 1; numCnt++)
printf("*");

printf("\n");
参考技术C #include < stdio.h >
int main()

int i , j , l ;
for( i = 1 ; i <= 5 ; i++ )

for( j = 0 ; j < 2 * i - 1 ; j++ )

printf( "*" );

printf( "\n" );

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

for ( l = 5 ; l-i>0 ; l-- )

printf( " " ) ;

for( j = 1 ; j <= 2*i-1 ; j ++ )

printf( "*" ) ;

printf( "\n" ) ;

system( "pause" ) ;
return 0 ;

欢迎采纳!!
参考技术D *
**
***
****
*****
******
*/

/*
int a,b;
for(a=1;a<=6;a++)
for(b=1;b<=a;b++)
printf("*");
printf("\n");

*/

/*
int a,b;
for(a=0;a<6;a++)
for(b=0;b<6-a;b++)
printf("*");
printf("\n");

*/

/* 3:

*
**
***
****
*****
******
*/
/*
int a,b,c;
for(a=1;a<=6;a++)
for(c=5;c>=a;c--)
printf(" ");
for(b=1;b<=a;b++)
printf("*");

printf("\n");


*/

/* 4:

******
*****
****
***
**
*

*/

/*

int a,b,c;
for(a=1;a<=6;a++)
for(c=1;c<=a;c++)
printf(" ");
for(b=6;b>=a;b--)
printf("*");

printf("\n");

*/

//正的等腰三角型 *1

/* int a,b,c;
for(a=1;a<=6;a++)
for(c=7;c>=a;c--)
printf(" ");
for(b=2;b<=a;b++)
printf("*");
for(b=1;b<=a;b++)
printf("*");
printf("\n");

*/

//正的等腰三角型 *2
/*
int a,b,c;

for(a=0;a<=5;a++)
for(c=5;c>=a;c--)
printf(" ");
for(b=1;b<=(2*a)+1;b++)
printf("*");

printf("\n");

*/

//菱形

/*
int a,b,c;
for(a=0;a<=3;a++)
for(c=3;c>a;c--)
printf(" ");
for(b=1;b<=(2*a)+1;b++)
printf("*");
printf("\n");

for(a=0;a<3;a++)
for(c=0;c<=a;c++)
printf(" ");
for(b=5;b>=(a*2)+1;b--)
printf("*");
printf("\n");

*/
//倒的等腰三角型

/*
int a,b,c;
for(a=1;a<=6;a++)
for(c=0;c<=a;c++)
printf(" ");
for(b=11;b>=(a*2)-1;b--)
printf("*");
printf("\n");

*/
/*
******
*****
****
***
**
*

*/

int a,b;
for(a=1;a<=6;a++)
for(b=6;b>=a;b--)
printf("*");
printf("\n");
本回答被提问者采纳

以上是关于c语言for循环求高手讲解一下下面这道题--输出100以内的素数。的主要内容,如果未能解决你的问题,请参考以下文章

求高手,c语言题目,随机输入一个数,范围100到1000.判断它是不是是6和19的倍数。最好for语

一道经典面试题讲解 :数组越界而没报错 ,却出现死循环 ?(C语言)

求java高手解答

c语言作业,求大神帮忙:使用双层 for 循环输出九九乘法口诀表

如何用c语言双for循环输出下面图形??

求大神,c语言怎么用for循环语句输出1到100的所有质数,我这么做结果出来的是2到100的所有数