验证哥德巴赫猜想
任意≥6的偶数都可以分成两个质数
#include <iostream>
#include <cmath>
using namespace std;
int isPrime(long long int a)//判断数a是否为质数
{
int tmp=sqrt(a);
for(long long int n=2;n<=tmp;n++)
{
if(a%n==0)
return 0;
}
return 1;
}
int main()
{
int flag=1;
for(long long int i=6;i<=10E16;i+=2)//对于可验证的数而言
{
for(long long int n=2;n<=i/2;n++)//在比需要验证的数小一半的数中
{
if(isPrime(n))//如果一个数是质数
{
if(isPrime(i-n))//且需验证数减去该数也是质数
break;//跳出循环
}
}
flag=0;//当有任意数不能分成两个质数时 flag的值改变
}
if(flag=1)
cout<<"验证成功"<<endl;
else
cout<<"验证失败"<<endl;
return 0;
}
由于10E16数字太大,运行后并无法看到输出,改为100时即可看到“验证成功”。
万年历
输入年月,出现月视图。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int y,m;
cin>>y>>m;
while(y<=0)
{
cout<<"请正确输入"<<endl;
cin>>y>>m;
}
int spe,n,day,ans,j,i;
long long int sum;
spe=((y-1)/4)-((y-1)/100)+((y-1)/400);
sum=spe+365*(y-1);//除去今年外的天数
for(n=1;n<=m;n++)//今年除去本月外的天数
{
switch(n)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day=31;
break;
case 2:
{
if(y%400==0||y%4==0&&y%100!=0)
day=29;
else
day=28;
break;
}
case 4:case 6:case 9:case 11:
day=30;
break;
default:
cout<<"请输入正确的月份!"<<endl;
return 0;
}
if(n<m)
sum+=day;
}
ans=(sum+1)%7;//该月第一天是星期几
cout<<"日"<<" "<<"一"<<" "<<"二"<<" "<<"三"<<" "<<"四"<<" "<<"五"<<" "<<"六"<<endl;
for(i=1;i<=ans;i++)
{
cout<<" "<<" "<<" ";
}
for(j=1;j<=day;j++)
{
cout<<setw(2)<<j<<" ";
if(ans==6)
cout<<endl;
ans=(ans+1)%7;
}
return 0;
}