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(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语言)