现在的位置: 首页 > 综合 > 正文

算法

2013年10月12日 ⁄ 综合 ⁄ 共 1449字 ⁄ 字号 评论关闭

求100以内素数:

 

算法1:

 

#include<iostream>  
using namespace std;//编译命令  
#include<math.h>  
const int MAX=100;//定义常量MAX  
int main()//主函数  
{  
    int prime[MAX+100]={0};//定义变量并初始化  
    int i,j,k=sqrt(MAX);  
    for(i=2; i<=k; i++)//枚举筛数  
    {  
        if(prime[i]==0)//如果这个数没被筛,就看看  
        {  
            j=i*2;//将原数扩大二倍初始化给j  
            do 
            {  
                prime[j]=1;//将j筛掉  
                j+=i;   //再扩大一倍   
            }  
            while(j<=MAX);//直到最大  
        }  
    }  
    for(i=2; i<=MAX; i++)  
    {  
        if(prime[i]==0)//循环输出  
            cout<<i<<" ";  
    }  
    cout<<endl;  
    return 0;//主函数结束  

 

 

求100以内的完数

一个数如果正好等于它的因子之和,这个数就称为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程找出100以内的所有完数,并输出其因子。
 
#include <iostream>
using namespace std;
int main()
{
  int i,j;
  cout <<"100以内的完数有: "<<'/n';
  for (i=1;i<=100;i++)
  {
    int sum=0;
    for (j=1;j<=i/2;j++)
      if (i%j==0) sum+=j;
    if (i==sum)
     {
       cout <<i<<",its factors are: ";
            for (j=1;j<=i/2;j++)
               if (i%j==0) cout <<j<<",";
       cout <<'/n';
      }
  }
  return 0;
}
    
求水仙花数

#include<iostream.h>
int main()  
{  
     int i,j,k;  
     for(i=1;i<=9;i++)          //注意:最高位取值范围1~9
     for(j=0;j<=9;j++)   
     for(k=0;k<=9;k++)  
       if(i*i*i + j*j*j + k*k*k == i*100 + j*10 + k)  
           cout<<i<<j<<k<<"是水仙花数/n";
        system("pause");
}

 

版本二:

#include<iostream.h>
int main()
{
    int a,b,c;
    for(int i=100;i<=999;i++)
    {
        a=i/100;
        b=i/10%10;
        c=i%10;
        if(i==a*a*a+b*b*b+c*c*c)
        cout<<i<<"是水仙花数"<<endl;
    }
    system("pause");
}

抱歉!评论已关闭.