ループのためにネストされた方法のより良い理解

行列、ダイヤモンドの印刷

//ループはに基づいて<=であれば、あなたを表す> =どのようにされています 

コードの重複の問題疑問符避けるためにどのように    マークダウン処理を


行数を制御するための外層

列番号を制御するための内層

#include<stdio.h>
int main()
{
    int i,j,k,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            printf("%d%d ",i,j);
        }
        printf("\n");
    }
}

 

 

*インナー出力するためのコントロールの数

#include<stdio.h>
int main()
{
    int i,j,k,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=(2*i-1);j++)
        {
            printf("*");
        }
        printf("\n");
    }
}


 

トリプルループ

スペース重いサイクル制御の第2の数 

以上に少ない4321から

#include<stdio.h>
int main()
{
    int i,j,k,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(k=1;k<=n-i;k++)            //循环中一直是以<=表示吗 ,如果>=会如何 
        {
            printf(" ");
        }
        for(j=1;j<=(2*i-1);j++)
        {
            printf("*");
        }
        printf("\n");
    }
}

 

 


菱形対称性

少ない行の最初の終了値を変更します

二FOR

K <=私はスペースこと1-4

少なくとも第3の三角形のための最終的な値の最初の複数の変更

 

#include<stdio.h>
int main()
{
    int i,j,k,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(k=1;k<=n-i;k++)            //循环中一直是以<=表示吗 ,如果>=会如何 
        {
            printf(" ");
        }
        for(j=1;j<=(2*i-1);j++)
        {
            printf("*");
        }
        printf("\n");
    }
    for(i=1;i<=n-1;i++)
    {
        for(k=1;k<=i;k++)            
        {
            printf(" ");
        }
        for(j=1;j<=(2*(n-i)-1);j++)
        {
            printf("*");
        }
        printf("\n");
    }
}


空洞化 

Selectステートメント中空増加

#include<stdio.h>
int main()
{
    int i,j,k,n;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        for(k=1;k<=n-i;k++)            //循环中一直是以<=表示吗 ,如果>=会如何 
        {
            printf(" ");
        }
        for(j=1;j<=(2*i-1);j++)
        {
            if(j==1||j==(2*i-1))
            printf("*");
            else
            printf(" ");
        }
        printf("\n");
    }
    for(i=1;i<=n-1;i++)
    {
        for(k=1;k<=i;k++)            
        {
            printf(" ");
        }
        for(j=1;j<=(2*(n-i)-1);j++)
        {
            if(j==1||j==(2*(n-i)-1))
            printf("*");
            else
            printf(" ");
        }
        printf("\n");
    }
}

"

第二に、9 * 9の乗算表を印刷

#include<stdio.h>
int main()
{
	int i,j,k,n;
	for(i=1;i<=9;i++)
	{

		for(j=1;j<=i;j++)
		{
			
			k=i*j;
			printf("%d*%d=%d\t",i,j,k);
		}
		printf("\n");
	}
}

 \ Tの平均横断次のタブ位置にスキップ

 

第三に、解決の素数は、効率を比較するには、いくつかの方法があります

https://blog.csdn.net/net_assassin/article/details/8960572

方法の一つ:トラバースの思考

素数Nは、1に加えてあり、それは、それが素数でないことを割り切れるが、今回はその後の数と判断された場合には、追加をしようとする2からN-1に考えるのは簡単です素数を必要とし、任意の数の要因を持っていません、これに従っていること 

#include<stdio.h>
int main()     //打印2-100间素数 
{
    int i,j;
    i=0;
    j=0;
    for(i=2;i<=100;i++)
    {
        for(j=2;j<=i-1;j++)  //因子只可能从2到n-1 
        {
            if(i%j==0)
            {
                break;
            }
        }
        if (j==i)
        {
            printf("素数=%d\n",i);
        }
    }
    return 0;
}


 

方法2:2を分離することに加えて  

一つの可能​​な方法はそれを行うには、あまりにも多くの要因を少ししようとします。我々は、Nが自身の要因に加えて、ある場合は係数a / 2がNよりも大きい場合、この因子は、N / 2(1×N = N 2×(N / 2)= Nに等しいよりも小さくなければならないことを考えるとこれが要因である場合は、別の要因、それは);?とNが奇数でなければならないので、そこに見つけることができます。コード

第二は、そのあまりの数の半分で割った数学的には割り切れない一、によってこれらの番号1を通過する必要があり、その後、より多くのそれの半分以上のため、この数は数で割り切れないです。

素数である、各素数が素数にあるか否かが判断される偶数に不可能であるため、直接、偶数を削除します

 

#include<stdio.h>
int main()     //打印3-100间素数 
{
	int i,j;
	i=0;
	j=0;
	for(i=3;i<=100;i+=2)
	{
		for(j=3;j<=i/2;j++)  //素数肯定不是偶数 
		{
			if(i%j==0) //余数为0,可整除一定不是素数 
			{
				break;
			}
		}
		if (j>i/2)//同因子 
		{
			printf("素数=%d\n",i);
		}
	}
	return 0;
}

 

 

 

 

方法3:SQRT率N / 2に試すことができ、それはNの平方根を試してみることができますか?私はそれを行いますか?要因は、対になっています。例えば、100のファクター:1と100,2と50,4と25、5、20、10、10。あなたはそれを見ていませんか?平方根より小さくなければならない一対の因子は、100に等しい以外の100または平方根に等しいです。コード

上述判断方法,明显存在效率极低的问题。对于每个数n,其实并不需要从2判断到n-1,我们知道,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),据此,上述代码中并不需要遍历到n-1,遍历到sqrt(n)即可,因为若sqrt(n)左侧找不到约数,那么右侧也一定找不到约数。
 

https://blog.csdn.net/LZXloveGYD/article/details/71340090

这样做可以减少循环次数,素数是因子为1和本身, 如果数c不是素数,则还有其他因子,其中的因子,假如为a,b.其中必有一个大于sqrt(c) ,一个小于sqrt(c) 。所以m必有一个小于或等于其平方根的因数,那么验证素数时就只需要验证到其平方根就可以了。即一个合数一定含有小于它平方根的质因子。

https://blog.csdn.net/huang_miao_xin/article/details/51331710

#include<stdio.h>
#include<math.h>
int main()     //打印2-100间素数 
{
	int i,j;
	i=0;
	j=0;
	for(i=2;i<=100;i++)
	{
		for(j=2;j<=sqrt(i);j++)  //因子
		{
			if(i%j==0) //余数为0,可整除一定不是素数 
			{
				break;
			}
		}
		if (j>sqrt(i))//同因子 
		{
			printf("素数=%d\n",i);
		}
	}
	return 0;
}

方法 ???? i/j            i*i 等同于sqrt https://www.cnblogs.com/ant-xu/p/11172207.html

#include <stdio.h>
int main ()
{
   /* 局部变量定义 */
   int i, j;
   
   for(i=2; i<100; i++) {
      for(j=2; j <= (i/j); j++)
        if(!(i%j)) break; // 如果找到,则不是质数
      if(j > (i/j)) printf("%d 是质数\n", i);
   }
 
   return 0;
}

发布了57 篇原创文章 · 获赞 27 · 访问量 1万+

おすすめ

転載: blog.csdn.net/ao_mike/article/details/102756326