Diễn đàn các môn học - Huỳnh Phước Hải
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

[b]Bai tap 20[/b]

Go down

[b]Bai tap 20[/b] Empty [b]Bai tap 20[/b]

Bài gửi  nguyenthanhhau Sat Jan 15, 2011 12:11 am

Yêu cầu bài toán:Tìm 2 số nguyên tố có tổng bằng một số chẵn cho trước.Ý Tưởng:
Các bạn phải nhập n là một số chẵn cho trước và n>=3.Các bạn nên sử dụng try ....catch.
B1:Tìm các số nguyên tố bé hơn n.
B2:Trong quá trình tìm ,ta tìm được một số nguyên tố nào thì đưa nó vào mảng tĩnh a(cũng có thể đưa vào Stack hay hàng đợi).
B3:Sau khi đã có được mãng a ta lần lượt lấy một phần tử bất kỳ so sánh với tấc cả phần tử còn lại.Ở đây mình lấy phần tử đầu so sánh cho dễ.So sánh được hiểu là :
phần tử thứ i+phần tử thứ j==n(chẵn) và (phần tử thứ i+phần tử thứ j)%2==0 và i>j nhe bạn.

Đây là code của mình:
using System;
using System.Collections.Generic;
using System.Text;

namespace bai20
{
class NguyenToChan
{ private int n;

//Khoi tao gia tri n
public NguyenToChan()
{
this.n = 0;
}
//Ham nhap lieu cho n
public void input()
{
Console.Write("Ban hay nhap n>0 va n chan. n=");
this.n = int.Parse(Console.ReadLine());
}
public bool test(int a)
{
if (a <= 1)
{
Console.WriteLine("So {0} khong phai la so nguyen to", a);
return false;
}
else
{
bool ngto = true;
int can = (int)Math.Sqrt(a);
for (int i = 2; i <= can; i++)
{
if (a % i == 0)
{
ngto = false;
break;
}
}
return ngto;
}
}
public bool XetChanTong(int []mang,int pt)
{
bool kq = false;
int temp=0;
for (int i = 0; i <= pt; i++)
for (int j = 0; j <= pt; j++)
{
temp = mang[i] + mang[j];
if (temp % 2 == 0 && temp == this.n && i < j)
{
Console.WriteLine(mang[i] + " " + mang[j]);
kq = true;
}
}

return kq;
}
static void Main(string[] args)
{
Console.WriteLine("Bai Toan:");
Console.WriteLine("Tim 2 so nguyen to co tong bang so chan cho truoc");
NguyenToChan ntc = new NguyenToChan();

ntc.input();
try
{
if ((ntc.n%2!=0)||(ntc.n<3)) throw new Exception();


int dem = 0;
int[] mang = new int[100];
for (int i = 2; i <= ntc.n; i++)
if (ntc.test(i))
mang[dem++] = i;

if (!ntc.XetChanTong(mang, dem))
Console.WriteLine("Khong co cap so nguyen to nao");

}
catch
{
Console.WriteLine("Thong bao!,Ban nhap khong dung");
}
}
}
}

//Mình rất mong nhận được ý kiến nhận xét từ bài này của các bạn.


nguyenthanhhau
nguyenthanhhau

Tổng số bài gửi : 6
Join date : 05/01/2011

Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết