C语言题目:素日期的判定……我不会啊,今天23点之前必须提交怎么办啊怎么办?求高手帮忙,分数大大的有!

素日期的定义如下:比如1993年5月1日,变成一个8位整数19930501(注意这里有时需补0),如果这个整数是素数,则定义该日期是素日期,据说生日是素日期的人,人气好!

input

3个数表示一个日期比如 1992 2 1 表示1992年2月1日

Output

判定19920201是不是素数,如果是输出"y"

不是输出"n"

Sample input

1992 2 1

sample output

n

第1个回答  2011-04-02
#include<stdio.h>
#include<math.h>
void isPrime(int m) //判断是不是素数
{
int i;
int a=sqrt(m);
for(i=2;i<=a;i++)
{
if(m%i==0)//不是素数
{
printf("sample output:\n");
printf("n\n",m);
break;
}
else
{
printf("sample output:\n");
printf("y\n");
break;
}

}
}
void main()
{
int year,month,day,sum;
printf("sample input:\n");
scanf("%d %d %d",&year,&month,&day);
sum=year*1000+month*100+day;
isPrime(sum);

}追问

那个可以被7整除……

追答

你还是别用我的了,我的好像有错误,我试了几个数也都对,我还没看出来哪有毛病呢,我刚才想取消了
我知道我哪错了,我那里不应该用BREAK
#include
#include
int isPrime(int m) //判断是不是素数
{
int i;
int a=sqrt(m);
for(i=2;i<a;i++)
{
if(m%i==0)//不是素数
{

return 0;
}
else
{

return 1;
}

}
}
void main()
{
int year,month,day,sum;
printf("sample input:\n");
scanf("%d %d %d",&year,&month,&day);
sum=year*1000+month*100+day;
if(isPrime(sum))
{
printf("sample output:\n");
printf("n\n");
}
else
{

printf("sample output:\n");
printf("y\n");
}

}

本回答被提问者采纳
第2个回答  2011-04-02
还没23:00,希望可以帮到你,临时写的,因为时间关系,注解可以再问我。

#include<stdio.h>
#include<string.h>
#include<math.h>

int main()
{
char year[5], mon[3], day[3];
char string[9]={0};
char zero[]="0";
int test=0;
scanf("%s%s%s", year, mon, day);
int n_mon=atoi(mon);
int n_day=atoi(day);

strcpy(string, year);
if(n_mon <= 9){
strcat(string, zero);
}
strcat(string, mon);
if(n_day <= 9){
strcat(string, zero);
}
strcat(string, day);

int n_string=atoi(string);

for(int i=2; i<=n_string-1; i++){
if(n_string%i==0){
test=1;
break;
}
}
if(test==1){
printf("n\n");
}
if(test==0){
printf("y\n");
}
return 0;
}
第3个回答  2011-04-02
#include <stdio.h>
#include <math.h>

int isprime(int n)
{
int i;
for (i = 2; i < (int)sqrt(n); i++)
{
if (n % i == 0)
return 0;
}
return 1;
}

void main()
{
int year, month, day, number;
scanf("%d %d %d", &year, &month, &day);
number = year * 10000 + month * 100 + day;
if (isprime(number))
printf("y\n");
else
printf("n\n");
}追问

这个好像非正常结束……

追答

什么叫好像,你用什么编译器,我用vc6.0没问题呀,你的问题在哪儿?

第4个回答  2011-04-02
#include "stdafx.h"

#include<stdio.h>

#include<math.h>

void prime(int num )

{

int i=2,x=sqrt(num);

do{ if(num%i==0) break; }while(i++<=x);

if(i<=x) printf("n\n");

else printf("y\n");

}

void main()

{

int date,year,month,day;

printf("Please enter the date:");

scanf("%d%d%d",&year,&month,&day);

date=year*10000+month*100+day;

prime(date);

}
第5个回答  2011-04-02
#include<stdio.h>
#include<math.h>
main()
{
int year,month,day,num,i,k;
printf("please input a date:\n");
scanf("%d %d %d",&year,&month,&day);
num=10000*year+100*month+day;
for(i=2;i<=sqrt(num);i++)
{
if(num%i!=0)
k=1;
else
{k=0;
break;
}
}
if(k)
printf("Y");
else
printf("N");
}
相似回答
大家正在搜